2012-10-01 55 views
1

Java中有四種類型的參考:強,弱,弱和幻影。請詳細說明Java在哪裏以及如何使用幻影參考。什麼是java中的幻像參考

編輯:

我看過的Javadoc,如assylias貼在下面。該部分表示,如果一個對象已經完成並且一些幻像引用指向該對象,則該對象是可重複使用的對象。我完全贊同這種說法。

幻影的用途是什麼?在哪些情況下我們應該使用它?

+7

歡迎堆棧溢出!我們鼓勵你[研究你的問題](http://stackoverflow.com/questions/how-to-ask)。如果你已經[嘗試了某些東西](http://whathaveyoutried.com/),請將其添加到問題中 - 如果沒有,請先研究並嘗試您的問題,然後再回來。 – 2012-10-01 11:58:27

+0

我在google上輸入了這個單詞,它給了我這個鏈接: - [Documentation](http://docs.oracle.com/javase/7/docs/api/java/lang/ref/PhantomReference.html) - MORAL - 與谷歌朋友.. –

+1

請參閱http://stackoverflow.com/questions/80690/phantom-referenced-objects – CAMOBAP

回答

12

如何每種類型的參考著作中java.lang.ref package javadoc描述:

去從最強到最弱,不同層次可達性的反映的對象的生命週期。它們的操作定義如下:

  • 如果可以通過某個線程在不經過任何引用對象的情況下到達某個對象,則該對象是強烈可達的。創建它的線程可以強烈地訪問新創建的對象。
  • 如果一個對象不能很好到達,但可以通過遍歷一個軟引用來達到,則該對象可以輕鬆到達。
  • 如果一個對象既不強烈也不可輕鬆到達,但可以通過遍歷弱引用來達到該對象。當清除弱可訪問對象的弱引用時,該對象就有資格進行最終化。
  • 如果一個對象既不強烈,也不軟弱,也不易到達,它已經完成,並且一些幻像引用指向該對象。
  • 最後,一個對象無法訪問,因此無法通過上述任何方式訪問,因此符合回收條件。

有跡象表明,給出瞭如何以及何時例子在堆棧溢出幾個職位,你可能需要一個PhantomReference

+1

謝謝,但我從javadoc讀過。瞭解強者,柔弱者。但力挺得到幻影。究竟是什麼以及我應該在哪裏使用它。 –

+0

@MukulGoel好吧,你的原始問題並不清楚。這篇文章回答你的問題:http://stackoverflow.com/questions/9826741/java-phantom-reference-when-we-using-it - 簡短的回答:它沒有什麼實際用途,99.9%的開發人員永遠不會使用該功能。 – assylias

+0

是的,原來的問題太過泛泛。謝謝。那個鏈接說明我在找什麼。 –