判断对象存活的方法

 

1.引用计数算法

每当一个地方引用计数器加一,引用失效,计数器减1。

不足:不能解决相互引用的问题。

2.可达性分析算法

通过GC Roots对象作为起始点,从这些点开始向下搜索,搜索走过的路径为引用链,当一个对象到GC Roots 没有任何引用链相连时,证明该对象不可用。(5,6,7虽然有关联,但是GC Roots 不可达,所以也会被回收)

image

可以作为GC Roots对象

  • a.虚拟机栈(栈帧中的本地变量表)中的引用对象
  • b.方法区中静态属性引用的对象
  • c.方法区中常量引用的对象
  • d本地方法栈中JNI引用的对象
3.finalize的用法

同一个对象只调用一次finalize方法。如果重写,会被显示调用,没有被重写,也会被调用。调用过的不再调用。

posted @ 2017-07-20 15:07  javabeginer  阅读(127)  评论(0编辑  收藏  举报