文章

GC Root如何确定一个对象是不是垃圾

GC Root如何确定一个对象是不是垃圾

GC Root如何确定一个对象是不是垃圾

有两种定位垃圾的方式

引用计数

这种方式是给堆内存当中的每个对象记录一个引用个数。引用个数为0的就认为是垃圾。这时早期JDK中使用的方式。引用计数无法解决循环引用的问题。

循环引用

有A、B两个对象,它们之间互相引用,但除此之外,外部并无其他引用,因此GC时不会清理这俩个对象,因此会产生内存泄露

根可达算法

这种方式是在内存中,从引用根对象向下一直找引用,找不到的对象就是垃圾。哪些是GC Root?Stack -> JVM Stack, Native Stack, class 类,run-time constant pool常量池,static reference 静态变量

本文由作者按照 CC BY 4.0 进行授权