六、垃圾收集算法

第一种:标记清除算法

 

就是标记需要回收的对象,然后再统一回收被标记的对象。

 

缺点:

  1.         效率问题,标记和清除都费时。
  2.         空间问题,清除之后会产生碎片。假设再需要大的内存时,将无法分配足够大的空间。
  3. image

 

第二种:复制算法

 

     将内存分为两块,每次只使用其中的一块。一块内存用完了就将存活的对象复制到另一块去。然后将使用过的内存一次清理掉。

image

 

    大部分的虚拟机将内存分为一块Eden 区和两块Survior 区,比例大小为8:1:1 。默认使用一块Eden和一块Survior

 

第三种:标记整理

跟标记清除的过程类似。只是最后将清除完的对象移动到一端。以便减少碎片。

 

image

 

 

第四种:分代收集算法

根据对象周期的不同,将java堆分为新生代和老年代。

新生代很多要死去,可以采用复制算法。

老年代很多存活,可以使用标记清理。

posted @ 2014-03-04 00:19  饮露秋林  阅读(150)  评论(0编辑  收藏  举报