软件开发架构师

GC算法

java 93 2019-04-20 00:18

一:复制算法

    将可用内存划分为大小相等的两块。每次只使用其中一块,当这块内存用完了就将仍然存活的对象复制到另一块上,然后把已使用完的这一块清理掉。这样可以保证空闲区域总是连续的。复制算法一般用于新生代中的垃圾回收。

 

二:标记—清除算法

    首先标记出需要回收的对象,然后统一回收所有被标记的对象。这种方法的不足之处在于:一是效率问题,需要两次遍历;二是清除之后产生大量不连续的内存碎片,当需要分配大内存给较大对象时无法找到合适的连续空间而不得不提取触发垃圾收集。

 

三:标记—整理算法

    对标记—清除算法进行改进:首先标记出需要清理的对象,然后让所有存活的对象向一端移动,然后清理掉存活对象区域的边界之外的内存。这样就使得回收产生的空闲区连续。

 

四:分代收集算法

    当代的商业虚拟机都采用分代收集算法。对堆中的新生代采取复制算法,老年代采取标记—清除算法或者标记—整理算法。

 

文章评论