Mark-Sweep(标记-清除) | Mark-Compact(标记-整理) | Copying(复制) | |
---|---|---|---|
速度 | 中等 | 最慢 | 最快 |
空间开销 | 少(但会有堆积碎片) | 少(不堆积碎片 | 通常需要活对象的2倍大小(不堆积碎片) |
移动对象 | 否 | 是 | 是 |
效率上讲,复制算法是当之无愧的老大,但是浪费了太多的内存。
而为了尽量兼顾上面提到的三个指标,标记-整理算法相对更平滑一些,但是效率上不如人意,它比复制算法多了一个标记的阶段,比标记-清除算法多了一个整理内存的阶段。
Mark-Sweep(标记-清除) | Mark-Compact(标记-整理) | Copying(复制) | |
---|---|---|---|
速度 | 中等 | 最慢 | 最快 |
空间开销 | 少(但会有堆积碎片) | 少(不堆积碎片 | 通常需要活对象的2倍大小(不堆积碎片) |
移动对象 | 否 | 是 | 是 |
效率上讲,复制算法是当之无愧的老大,但是浪费了太多的内存。
而为了尽量兼顾上面提到的三个指标,标记-整理算法相对更平滑一些,但是效率上不如人意,它比复制算法多了一个标记的阶段,比标记-清除算法多了一个整理内存的阶段。