我想了解下面的粗體語句。這是什麼意思? (Link)java中phantomreference的重要性
它覆蓋
finalize()
現在必須被確定爲是在至少兩個分開的垃圾收集週期 垃圾以 被收集的對象。當第一個週期確定它是垃圾時, 有資格完成。由於在定稿過程中對象「復活」 的可能性(slim,但不幸實際),垃圾收集器必須在 對象實際被刪除之前再次運行。 因爲最終確定可能不是 已經及時發生,所以在對象正在等待 完成時可能發生了任意數量的垃圾回收循環。這可能意味着在實際清理垃圾對象時出現嚴重延遲,並且爲什麼您可以獲得OutOfMemoryError
,即使當大部分堆都是垃圾時。
什麼幻影解決
隨着幻影,這種情況是不可能的 - 當一個幻影 入隊,也絕對沒有辦法讓一個指針到現在已經死對象(這是好,因爲它不再在記憶中)。 由於PhantomReference不能用於重新生成對象,因此可以在第一次垃圾回收循環中立即清除對象 ,在該循環中發現它是幻象可達的。
請幫助我理解這個問題&解決
感謝
現在是這樣,謝謝 –