浅谈JVM之GC(一)

1.GC是什么?

Garbage Collection,垃圾收集。对于计算机而言,即把没用的垃圾对象清理掉,回收内存。

2.GC的2个步骤

既然要清理垃圾对象,随之而来就是2个问题

1)怎么知道哪些是垃圾对象?

2)知道以后,通过什么方法清理掉?

这就对应了GC中的2个过程

&&标记过程;

&&清除过程;


3.垃圾对象的标记过程

通过什么方法来确定哪些对象是垃圾?

3.1. 引用计数法

对象被引用一次,计数就+1,当引用次数为0,也就意味着没用了。但总所周知,循环引用的问题,A引用B,B引用A,就让它们逃过一劫。

3.2.可达性分析法

从GCRoot出发,有点类似于树形结构,在引用链上的就是存活对象,剩下到不了的就是垃圾对象。

GCRoot都有哪些?

1)java虚拟机栈中引用的对象
2)方法区中的类静态属性引用的对象
3)方法区中的常量引用的对象
4)本地方法栈中JNI本地方法的引用对象


4. 垃圾对象的清除过程

堆中不同区域,有着不同的算法,常见的有:

1)复制算法

2)清除算法

3)压缩算法

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容