如何判断一个对象可以被回收:

1.如何判断一个对象可以被回收:

1.1.引用计数法:

  • 实现原理:一个对象被其他变量所引用,就让其计数加一,如果被引用两次其计数加二,如果变量不在引用此对象时,其计数减一;当对象的引用计数变为0时,即 无变量再引用它,可以被垃圾回收。

  • 漏洞:对象间循环引用,会产生内存泄漏(被占用的资源无法释放)

1.2.可达性分析算法:

java虚拟机中垃圾回收器采用可达性分析来探索所有存活的对象

扫描堆中的对象,看是否能够沿着 GC Root对象为起点的引用链找到该对象,找不到表示可以回收。

可以作为GC Root对象的对象:

虚拟机运行时的核心类对象(Object,HashMap,String等)。
操作系统方法调用时所引用的java对象。
被加锁的对象
活动线程中所使用的对象。 (虚拟机栈中的局部变量表引用的对象)

posted on 2021-06-05 09:20  凡人精灵  阅读(19)  评论(0编辑  收藏  举报

导航