Java虚拟机之GC算法
- 标记清除算法
一个是效率问题,标记和清除两个过程的效率都不高;另一个是空间问题,标记清除之后会产生大量不连续的内存碎片,空间碎片太多可能会导致以后在程序运行过程中需要分配较大对象时,无法找到足够的连续内存而不得不提前触发另一次垃圾收集动作。
- 复制算法(新生代)
可用内存按容量划分为大小相等的两块
- 标记整理(老年代)
让所有存活的对象都向一端移动,然后直接清理掉端边界以外的内存
- 分代收集
把Java堆分为新生代和老年代,这样就可以根据各个年代的特点采用最适当的收集算法。
还没有评论,来说两句吧...