GC算法(Java)

1.标记清除算法

       分为标记和清除两个阶段:首先标记出所有需要回收的对象,在标记完成后统一回收所有被标记的对象。

       缺点:效率不高并且会产生不连续的内存碎片。


GC算法(Java)_第1张图片

2.复制算法

       把内存空间划为两个区域,每次只使用其中一个区域。垃圾回收时,遍历当前使用区域,把正在使用中的对象复制到另外一个区域中。算法每次只处理正在使用中的对象,因此复制成本比较小,同时复制过去以后还能进行相应的内存整理,不会出现“碎片”问题。

        优点:实现简单,运行高效。

        缺点:会浪费一定的内存。一般新生代采用这种算法。


GC算法(Java)_第2张图片

3.标记整理算法

       标记阶段与标记清除算法一样。但后续并不是直接对可回收的对象进行清理,而是让所有存活对象都向一端移动,然后清理。

       优点:是不会造成内存碎片。


GC算法(Java)_第3张图片

参考链接:https://yemengying.com/2016/05/13/jvm-GC/

你可能感兴趣的:(GC算法(Java))