可回收对象的判定方法:引用计数算法
给对象添加一个引用计数器,每一个引用它的地方时,就+1,失效就-1,为0时候就是不能再被用了。
缺陷: 注意循环引用,就是你用我的,我用你的,叫做死锁吧,引用计数器是1,无法回收。A.b=B;B.a=A;
现在主流的jvm没有使用这个算法。
可达性分析算法:
通过一系列称为GC Roots的对象作为起始点,从这些结点开始向下搜索,搜索走过的路径称为引用链,当一个对象到GC Roots没有任何引用链相连,图论证明,一个点要达到那个点,可是没有任何路径可以到达了,这个对象就没有用了。
GC Roots:
虚拟机栈中的引用的对象。
在方法区中类静态属性所引用的变量。
在方法区中常量所引用的变量。
本地方法栈中所引用的对象。
JVM自动内存管理
最新推荐文章于 2022-07-31 11:47:43 发布