JVM垃圾收集算法之复制算法

算法描述

在之前的文章中我们讲到了标记-清理算法,如果没看的小伙伴可以返回学习一下:https://blog.****.net/qq_15682815/article/details/104632989。标记-清理算法的明显缺点就是效率低和内存碎片问题。为了解决这个问题,大牛们发明了复制(Copying)算法。

算法步骤

1、将可用内存按容量划分为大小相等的两块

2、每次只使用其中的一块

3、当这一块的内存用完了,就将还存活着的对象复制到另外一块上

4、最后把已经使用过的内存空间一次清理掉

JVM垃圾收集算法之复制算法

算法优点

1、由于每次都是对其中一块进行内存回收,所以不需要考虑碎片问题

2、实现简单,运行高效

算法缺点

可使用内存缩小为原来的一半

算法应用

       现在的商业虚拟机都采用复制算法来回收新生代。新生代被划分为一块较大的Eden空间和两块较小的Survivor空间。每次使用Eden和其中的一块Survivor.当回收时,将Eden和Survivor中还存活着的对象一次性拷贝到两外一块Suvivor上,然后清理掉Eden和刚才使用过的Survivor