什么是java中的幻像引用

时间:2012-10-01 11:56:58

标签: java reference

Java中有四种类型的引用:强,弱,弱和幻像。请详细说明Java在何处以及如何使用幻像参考。

编辑:

我确实读过了javaDoc,就像下面发布的assylias一样。该部分说,如果一个物体已经完成并且一些幻影参考指向它,则该物体是幻像可重新替换的。我完全得到了这个说法。

幻像的用途是什么?我们在哪些情况下使用它?

1 个答案:

答案 0 :(得分:12)

java.lang.ref package javadoc

中描述了每种参考的工作原理
  

从最强到最弱,不同的可达性水平反映了物体的生命周期。它们在操作上定义如下:

     
      
  • 如果某个线程可以在不遍历任何引用对象的情况下到达某个对象,则可以强烈访问该对象。新创建的对象可由创建它的线程强烈访问。
  •   
  • 如果对象无法轻松到达,则可以轻柔地到达,但可以通过遍历软引用来访问该对象。
  •   
  • 如果一个对象既不强也不可轻易到达,但是可以通过遍历弱引用来到达,则该对象是弱可达的。当清除对弱可达对象的弱引用时,该对象就有资格进行最终确定。
  •   
  • 如果一个物体既不是强烈的,柔和的,也不是微弱的可触及的,那么它就是幻影可达的,它已经完成,并且一些幻象参考指的是它。
  •   
  • 最后,如果无法通过上述任何方式访问某个对象,则无法访问该对象,因此有资格进行回收。
  •   

Stack OVerflow上有一些帖子提供了您需要PhantomReference的方式和时间的示例: