1 GC-垃圾回收算法
1.1 标记清除算法(Mark-Sweep)
最基础的垃圾回收算法,分为标记和清除两个阶段:
1.标记出所有需要回收的对象;
2.回收被标记的对象所占用的内存空间;
算法效率较低, 会产生较多内存碎片, 可能会导致大对象找不到可利用空间问题。

1.2 复制算法(Cpoying)
按照内存容量将内存划分为相等大小的两块内存区域。每次使用时只使用其中的一块,当这一块内存满后将存活的对象复制到另一块内存区域上去,将剩余的已使用的内存回收。
这种算法实现简单,内存效率高,不易产生内存碎片,但是内存使用率被压缩到了以前的一半。当存货对象增多时,复制算法的效率会大大降低。

1.3 标记整理算法(Mark-Compact)
结合以上两个算法,为了避免缺陷而提出,标记阶段和标记清除算法相同,但标记后不是清理对象,而是将存活的对向移至内存的一端,然后清除边界外的对象。

1.4 分代收集算法
目前JVM大部分采用的都是分代收集算法,是根据对象存活的不同生命周期将内存划分为不同的域。主要将GC堆内存划分为

本文介绍了Java中的垃圾回收算法,包括标记清除、复制、标记整理和分代收集,以及各种垃圾收集器,如Serial、ParNew、Parallel Scavenge、Serial Old、Parallel Old、CMS和G1,分析了它们的工作原理和特点。
最低0.47元/天 解锁文章
1637

被折叠的 条评论
为什么被折叠?



