Предполагая, что линия 19 является линией отмечен TODO Auto-generated method stub
, то объекты, созданные программой единственным объектом, который является право для GC по линии 19 является объектом называется переменной a1 ,
Объект, который был первоначально присвоен a2, по-прежнему назначен, поэтому он недоступен.
Статическое значение в A.b1 по-прежнему назначено объекту, который изначально был назначен для b1, чтобы объект не был доступен для GC - статические значения в реальном времени для времени жизни класса, так что хотя экземпляр a1 может получить GC ' d статический экземпляр, который был назначен через него, по-прежнему можно ссылаться.
Поскольку экземпляр a2 по-прежнему назначен, поле экземпляра a2.b2 также недоступно для GC. Это значение содержит экземпляр B, первоначально назначенный локальной переменной b2 в основном методе.
Из четырех объектов, созданных в основном методе, единственным, фактически доступным для GC конечной линией программы, является объект, первоначально назначенный a1. Это только ссылка была установлена в значение null, и поэтому ничего больше невозможно достичь. Все остальные экземпляры достижимы либо через локальную переменную (a2), статическую ссылку (A.b1), либо ссылку на экземпляр (a2.b2).
зависит от которого линия строка 19;) – Mark
линию 19 Предполагая, что является последним (т. е. закрывающая скобка) «main», все объекты имеют право на GC, так как это конец программы. Сколько из них я не могу точно сказать, так как я точно не знаю, какие классы загружаются JVM. После 'a1 = null;', только для 'a1' подходит для gc. После 'b1 = null;', 'b1' получает право на GC. 'b2' не получает права на GC после' b2 = null; ', поскольку он все еще доступен через' a2.b2'. – Turing85
Ссылаясь на мое прежнее замечание: обратите внимание, что когда я worte «a1' получает право на GC», я на самом деле имел в виду «объект,' a1 », на который ссылался, прежде чем он был установлен в« null », получает право на GC». Трудно говорить об этом объекте, поскольку он существует и безымянный, если он не собирает мусор. Надеюсь, что намеченное значение ясно. – Turing85