1 GC-垃圾回收算法
1.1 标记清除算法(Mark-Sweep)
最基础的垃圾回收算法,分为标记和清除两个阶段:
1.标记出所有需要回收的对象;
2.回收被标记的对象所占用的内存空间;
算法效率较低, 会产生较多内存碎片, 可能会导致大对象找不到可利用空间问题。
1.2 复制算法(Cpoying)
按照内存容量将内存划分为相等大小的两块内存区域。每次使用时只使用其中的一块,当这一块内存满后将存活的对象复制到另一块内存区域上去,将剩余的已使用的内存回收。
这种算法实现简单,内存效率高,不易产生内存碎片,但是内存使用率被压缩到了以前的一半。当存货对象增多时,复制算法的效率会大大降低。
1.3 标记整理算法(Mark-Compact)
结合以上两个算法,为了避免缺陷而提出,标记阶段和标记清除算法相同,但标记后不是清理对象,而是将存活的对向移至内存的一端,然后清除边界外的对象。