简单描述垃圾回收过程使用的算法
一、垃圾标记算法
1、引用计数标记:一个实例对象被引用一次,引用计数+1,循环引用将无法准确计数标记。
2、可达性分析标记(根搜索标记):从GC Roots搜索引用的对象 ,有引用则标记,未引用则不标记。
二、垃圾清除算法
1、清除算法:直接清除未标记的实例对象,会产生很多内存碎片。
2、复制清除算法:先将标记的实例对象复制到另一块内存区,然后清除未标记(余下)的实例对象。新生代的是S1和S2使用该算法。
3、清除压缩算法:先清除未标记的实例对象,然后整理内存碎片,使其内存连续。
三、算法使用
GC时,根据每个区域的特点不同,选择不同的算法
1、新生代:该区域使用的可达性分析标记--复制清除算法,当进行垃圾回收时,将Eden和Survivor中还存活的对象一次性复制到另一块Survivor空间上,最后清理掉Eden和刚才用过的Survivor空间。
2、老年代 :因为老年代中的实例对象都是存活很久的对象,因此在可达性分析标记后,采用清除算法和清除压缩算法。
3、永久代:不进行GC,使用的本地内存。
浙公网安备 33010602011771号