Когда будет строка быть собранным "мусор" в Java

В Java, когда объект не имеет никакой живой ссылки, это имеет право на сборку "мусора". Теперь в случае строки, дело обстоит не так потому что строка войдет в строковый пул и JVM, поддержит объект для resuse. Таким образом, это означает, что строка, однажды созданная, никогда не будет собираться "мусор"?

59
задан 23 August 2013 в 19:36

1 ответ

Строковые объекты, которые находятся в строковом пуле, не будут собраны "мусор". Другие Строковые объекты будут собраны "мусор", если у Вас не будет ссылки на него в Вашем выполнении программы.

можно спросить, какие строковые объекты идет для строкового представления пула. Объекты в строковом пуле также:

  • литералы Времени компиляции (например, String s1 = "123";)

  • Интернированные Строковые объекты во времени выполнения (например, String s2 = new String("test").intern();)

И s1 и s2 ссылаются на строковый объект в строковом пуле.

Любые объекты, которые создаются во время выполнения и не интернируются, будут действовать как обычный объект и находиться в памяти "кучи". Эти объекты могут быть собраны "мусор".

пример этого был бы: String s3 = s1 + s2;

Здесь, s3 ссылки строковый объект, который находится в памяти "кучи" вместе с другими объектами (не в Строковом пуле).

1
ответ дан 1 November 2019 в 12:42

Другие вопросы по тегам:

Похожие вопросы: