Встречается на собеседованиях • сегодня
Может ли finalize не вызываться
Да, finalize() может не вызываться. Это связано с тем, что сборщик мусора (GC) работает недетерминированно, и JVM не гарантирует его вызов. Вот основные причины:
- GC не запускался – если объект еще не удален,
finalize()не выполнится. - Принудительное завершение – при
System.exit()или аварийном завершении. - Исключение в finalize() – если в другом
finalize()выброшено исключение, оставшиеся могут не выполниться. - Объект достижим – если во время финализации объект снова становится достижимым (например, сохраняется в статическое поле).
Пример:
java
public class Example {
@Override
protected void finalize() throws Throwable {
System.out.println("Finalize called");
}
public static void main(String[] args) {
new Example(); // Объект станет мусором, но finalize() может не вызваться
System.gc(); // Не гарантирует вызов finalize()
}
}
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы