Какие проблемы метода Finalize решает PhantomReference?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Какие проблемы метода Finalize решает PhantomReference?

Сообщение Anonymous »

Я хотел понять утверждение, выделенное ниже жирным шрифтом. Что это значит? (Ссылка)

объект, который переопределяет метод Finalize(), теперь должен быть определен как мусор как минимум в двух отдельных циклах сборки мусора, чтобы его можно было собрать. Когда первый цикл определяет, что это мусор, он становится пригодным для финализации. Из-за (незначительной, но, к сожалению, реальной) возможности того, что объект был «воскрешен» во время финализации, сборщик мусора должен запуститься снова, прежде чем объект можно будет действительно удалить. А поскольку финализация могла произойти несвоевременно, пока объект ожидал финализации, могло произойти произвольное количество циклов сборки мусора. Это может означать серьезные задержки при фактической очистке объектов мусора, и именно поэтому вы можете получить OutOfMemoryErrors, даже если большая часть кучи представляет собой мусор.

Что решает PhantomReference

При использовании PhantomReference такая ситуация невозможна — когда PhantomReference поставлен в очередь, абсолютно ничего не происходит. способ получить указатель на уже мертвый объект (и это хорошо, поскольку его больше нет в памяти). Поскольку PhantomReference нельзя использовать для воскрешения объекта, объект можно мгновенно очистить во время первого цикла сборки мусора, в котором обнаруживается, что он фантомно доступен. Затем вы сможете распорядиться любыми необходимыми ресурсами по вашему усмотрению.

Пожалуйста, помогите мне понять проблему и ее решение.
Спасибо

Подробнее здесь: https://stackoverflow.com/questions/313 ... nce-solves
Ответить

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

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

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

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

Вернуться в «JAVA»