- 引用计数法:通过记录并操作每个对象被引用的次数而控制GC
- 增量收集法:是在应用,运行的时候运行算法进行垃圾回收,但是在JDK1.5之后就不在使用该算法。
- 标记-清除算法:先从根节点开始标记所有有被引用的对象,然后遍历整个堆,把未标记的对象清除。
- 复制-清除算法:把内存空间分为两个对等的区域,每次只使用其中一个区域。GC时,遍历当前使用区域,将正在使用的对象复制到另一个区域中去并加以整理,清除正在使用区的所有对象。交换两个区的内存。
- 标记-清除/整理算法 :这个算法集合了标记-清除算法和复制-清除算法的优点,不产生空间碎片,同时能够不占用多余的内存空间。
(6)分区算法:将整个堆空间氛围连续的不同小区间,每一小区间都独立使用,独立回收,并可以控制一次回收的小区间数量。一般来说,在相同条件下,堆空间越大,进行一次垃圾回收的所需的时间就越长,并根据目标停顿时间的要求,每次合理地控制回收部分小区间,而不是回收整个堆空间,则可以有效减少一次垃圾回收所产生的停顿时间。