第一种:标记清除算法
就是标记需要回收的对象,然后再统一回收被标记的对象。
缺点:
第二种:复制算法
将内存分为两块,每次只使用其中的一块。一块内存用完了就将存活的对象复制到另一块去。然后将使用过的内存一次清理掉。
大部分的虚拟机将内存分为一块Eden 区和两块Survior 区,比例大小为8:1:1 。默认使用一块Eden和一块Survior
第三种:标记整理
跟标记清除的过程类似。只是最后将清除完的对象移动到一端。以便减少碎片。
第四种:分代收集算法
根据对象周期的不同,将java堆分为新生代和老年代。
新生代很多要死去,可以采用复制算法。
老年代很多存活,可以使用标记清理。