Внутренние классы и сборка мусора: различия в поведении между Java 8 и последней версией JavaJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Внутренние классы и сборка мусора: различия в поведении между Java 8 и последней версией Java

Сообщение Anonymous »

Сегодня у меня было собеседование, и интервьюер представил следующий код. Они спросили, каким будет результат в Java 8 и последней версии Java.
Насколько я понимаю, поскольку B является внутренним классом (нестатическим вложенным классом), он содержит ссылку на экземпляр A, что предотвращает сбор мусора A (GC). Такое поведение ожидается в Java 8. Однако интервьюер продемонстрировал, что A можно собирать мусором в последней версии Java (Java 23). Затем он спросил, в какой версии Java произошло это изменение и почему A теперь может быть GC. Я считаю, что такое поведение связано либо с новым механизмом внутренних классов (a подвергается сборке мусора, даже если b еще жив. В принципе, b должен содержать ссылку на a) или новый процесс сборки мусора. Однако я не знаю ответа.
class A {
class B {
@Override
protected void finalize() throws Throwable {
System.out.println("B destroy");
}
}

@Override
protected void finalize() throws Throwable {
System.out.println("A destroy");
}
}

public class Solution {
public static void main(String[] args) throws InterruptedException {
A a = new A();
A.B b = a.new B();
a = null;
System.gc();
System.out.println("finish gc");
Thread.sleep(1000);
System.out.println("finish sleep");
}
}

Вывод Java 8
finish gc
finish sleep

Вывод Java 23
finish gc
A destroy
finish sleep


Подробнее здесь: https://stackoverflow.com/questions/790 ... a-8-and-la
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение