Когда ГХ обнаружил объект с классом, в котором finalize()
был переопределен, он добавляется в очередь объектов для вызова finalize () для них.Только после того, как объект был завершен один раз, GC может очистить его.то есть это будет на более позднем GC.
Например, если объект находится в постоянном пространстве, он может быть найден до тех пор, пока не будет выполнен полный сбор, и он будет очищен только на полном GC после метода finalizeбыл вызван.
Для получения дополнительной информации, это Java 11 Javadoc для Object.finalize()
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#finalize()
, так что есть ли вероятность, что сборщик мусораполностью уничтожил объект в куче, но не вызвал метод finalize () для этого объекта?
Пока объект находится в очереди завершения, он не может быть удален.
И вы все предполагали, что уничтожение объекта не может быть определеноуборщик мусора.
Он не будет уничтожен, пока есть сильная ссылка на него.