Выделение объекта типа String в том виде, в котором он находится в пуле строк - PullRequest
2 голосов
/ 19 января 2010

Мы знаем, что для любых других объектов GC позаботится об освобождении. но что происходит с объектами String, которые находятся в пуле String. кто примет решение об освобождении и кто на самом деле это делает? потому что мы знаем, что строковые литералы будут присутствовать даже после разыменования.

Ответы [ 2 ]

2 голосов
/ 19 января 2010

Строки, на которые вы больше не ссылаетесь, могут быть собраны сборщиком мусора, так как пул строк, скорее всего, использует слабые ссылки , которые являются ссылками на объекты, которые можно собирать мусором, и точно придуманы для этого (кеш и тому подобное).

Вы можете прочитать больше о слабых ссылках здесь и здесь .

0 голосов
/ 19 января 2010

Строка пула живет в пермском пространстве. Это будет мусор, собранный, как и любое другое поколение .

Если вы запустите код , как в этом примере , он заполнит пробел до того, как начнется сборка мусора. Вы не увидите OutOfMemoryErrors, пока внутренние строки могут быть мусором.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...