Цитирование this страницы:Являются ли интернированные константы подходящими для GC?
Сколько объектов будет иметь право на GC здесь?
String s = "hello"; Character ch1 = 1; Character ch2 = 1; ch1 = null; s = null;
Я считаю, что ответ 1.
Я хотел бы понять, как это работает в Java 6.
Мое понимание в данный момент:
Строка собирается бассейн. Позже, нет ссылки на него. Итак, согласно this ответ (я не понимаю эту часть о загрузчике классов, можете ли вы это уточнить?), String-пул, скорее всего, не будет собираться мусором ...
Ok, Персонажи. В Java существует оптимизация , которая приведет к тому, что ch1
и ch2
укажут тот же объект. Итак, эти маленькие персонажи тоже собираются в какой-то пул. Но, несмотря на то, что ch1
является null
, мы по-прежнему можем получить доступ к 1
с ссылкой ch2
.
Итак, мой ответ на данный момент будет 0.
Правильно ли я на каждом шагу? Если нет, пожалуйста, поправьте меня. Не могли бы вы объяснить, как это работает?