Полагаю, что такая программа ...
class Test {
public static void main(String[] args) {
new Test();
System.out.println("done");
}
protected void finalize() {
System.out.println("this object is known to never be referenced.");
}
}
... может выводить "this object is known to never be referenced."
до "done"
. (Поправь меня, если я здесь не прав!)
Кроме того, компилятору / JVM легко обнаружить «непрочитанные локальные объекты». Например, в приведенной ниже программе Eclipse замечает, что « Локальная переменная t никогда не читается ».
Однако было бы недопустимо, чтобы JVM выдавала "this object is known to never be referenced."
до "done"
с учетом (версии .class) программы ниже?
class Test {
public static void main(String[] args) {
Test t = new Test();
System.out.println("done");
}
protected void finalize() {
System.out.println("this object is known to never be referenced.");
}
}
Большая часть документации по сборке мусора говорит о достижимости. Учитывая тот факт, что t
никогда не читается, объект явно не «достижим», или?
Ссылки на JLS приветствуются.