JVM常用的垃圾回收算法
JVM常用的垃圾回收算法
JVM常用的垃圾回收算法
常用的GC算法
MarkSweep
标记清除算法
标记阶段:把垃圾内存标记出来清除阶段:直接将垃圾内存回收这种算法是比较简单的,但是会产生大量的内存碎片,可能导致大对象无法分配,并带来GC问题。
Copying
拷贝算法
将内存分为大小相等的两半,每次只使用其中一半。垃圾回收时,将当前这一块中存活的对象复制到另一半中,并将这一半全部清空。
没有内存碎片内存只有一半的空间可用,浪费空间。而且效率跟存或对象个数有关
MarkCompack
标记压缩算法为了解决拷贝算法和标记清除算法。在完成标记之后,不是直接清理垃圾内存,而是将存活对象往一端移动,然后将端边界以外的所有内存直接清除
比较
这三个算法各有利弊,各自有各自的适用场景。
本文由作者按照 CC BY 4.0 进行授权