JVM:判断对象已经死亡

1、如何在Java中判断对象已经死亡?
引用计数法
给对象添加一个引用计数器,每当有一个地方引用它时,计数器值就加1,当引用失效时,计数器值就减1;任何时刻计数器值为0的对象就是不可能被使用的
反例:对象之间相互循环使用
指两个对象相互引用着对方之外,无任何其他引用。因为它们互相引用对方,导致计数器的值都不为0,于是引用计数器无法通知GC去回收它们
可达性分析
基本思想就是通过一系列称为“GC Roots"的对象作为起点,从这些节点开始向下搜索,节点所走过的路径称为引用链,当一个对象到GC Roots没有任何引用链相连的话,则证明此对象是不可用的

可作为GC Roots的对象包括:
虚拟机栈(栈中的本地变量表)中引用的对象
本地方法栈中引用的对象
方法区中静态属性引用的对象
方法区中常量引用的对象

posted @ 2020-11-02 14:31  走过路过哭过  阅读(66)  评论(0)    收藏  举报