dsa*_*ish 16 java garbage-collection
我们可以看到"幻影可达"与"无法访问"一样无法访问:§
如果一个物体既不是强烈的,柔和的,也不是微弱的可触及的,那么该物体是幻影可达的,它已被最终确定,并且一些幻象参考指的是它.
最后,如果无法通过上述任何方式访问某个对象,则该对象无法访问,因此有资格进行回收.
现在,来自:http://download.oracle.com/javase/6/docs/api/java/lang/ref/PhantomReference.html
与软引用和弱引用不同,垃圾收集器在排队时不会自动清除幻像引用.通过幻像引用可访问的对象将保持不变,直到所有此类引用都被清除或自身无法访问.
基本原理是什么?还有一个吗?
这是Java API怪癖的另一个典型案例吗?
排队时清除软引用,因为软引用的主要用途是允许缓存大对象,清除软引用允许对大型缓存对象进行垃圾回收.
排队时清除弱引用,因为弱引用的主要用途是允许一个引用对象而不阻止它被垃圾收集,因此一旦对象排队就清除引用允许对象被垃圾收集.
入队时不会清除幻像引用,因为幻像引用的一个用例是允许在对象被垃圾回收之前执行清理.通过不清除引用,对象保持幻像可达(并且不符合垃圾收集条件),直到用户清除对该对象的PhantomReference,或者PhantomReference本身被垃圾收集.
这在这里解释,
如果一个物体既不是强烈的,柔和的,也不是微弱的可触及的,那么该物体是幻影可达的,它已被最终确定,并且一些幻象参考指的是它.
最后,如果无法通过上述任何方式访问某个对象,则该对象无法访问,因此有资格进行回收.
| 归档时间: |
|
| 查看次数: |
997 次 |
| 最近记录: |