Java中有四种类型的引用:强,弱,弱和幻像。请详细说明Java在何处以及如何使用幻像参考。
编辑:
我确实读过了javaDoc,就像下面发布的assylias一样。该部分说,如果一个物体已经完成并且一些幻影参考指向它,则该物体是幻像可重新替换的。我完全得到了这个说法。
幻像的用途是什么?我们在哪些情况下使用它?
答案 0 :(得分:12)
java.lang.ref
package javadoc:
从最强到最弱,不同的可达性水平反映了物体的生命周期。它们在操作上定义如下:
- 如果某个线程可以在不遍历任何引用对象的情况下到达某个对象,则可以强烈访问该对象。新创建的对象可由创建它的线程强烈访问。
- 如果对象无法轻松到达,则可以轻柔地到达,但可以通过遍历软引用来访问该对象。
- 如果一个对象既不强也不可轻易到达,但是可以通过遍历弱引用来到达,则该对象是弱可达的。当清除对弱可达对象的弱引用时,该对象就有资格进行最终确定。
- 如果一个物体既不是强烈的,柔和的,也不是微弱的可触及的,那么它就是幻影可达的,它已经完成,并且一些幻象参考指的是它。
- 最后,如果无法通过上述任何方式访问某个对象,则无法访问该对象,因此有资格进行回收。
Stack OVerflow上有一些帖子提供了您需要PhantomReference
的方式和时间的示例: