垃圾回收GC算法

答案

这些垃圾回收器在按分代的不同,使用的回收算法是不一样的,垃圾回收算法有:

  1. 标记-清除算法 分为两个阶段,首先标记所有可清除的对象,其次统一回收已标记的对象 缺点:会产生大量不连续的内存碎片,如果接下来需要分配的对象很大,这样找不到连续空间仍会触发另一次垃圾收集

  2. 复制算法 一般用于新生代的回收算法,会把内存分为Eden和两个Survivor区,每次垃圾回收执行时,会把Eden和其中一个Survivor中的对象复制到另一Survivor之中,然后清空它们。优点是可以避免内存碎片问题

  3. 标记-整理算法 一般用于老年代的回收算法,会让存活的对象都向一端移动,全部移动完成后可以释放掉之后的内存

  4. 分代收集算法 根据对象的存活特点将对象划分为新生代和老年代,新生代对象生生灭灭比较频繁,大量的对象死去只有少量存活,适合采用复制算法;而老年代中的对象相对稳定,就可以采用标记-清除算法或标记-整理算法来完成回收。

  5. MinorGC MajorGC FullGC 新生代触发的GC称为MinorGC,当Eden满了,无法再为新对象分配内存空间时触发,MinorGC也会触发Stop-the-world 老年代触发(可能包含部分的永久代)的GC称为MajorGC,新生代和老年代全面的GC称为 FullGC,但jvm的一些报告工具都会将MajorGC当做是 FullGC看待 当Survivor区的对象熬过一次MinorGC它的岁数就长了一岁,熬过15岁(默认值)的对象可以晋升到老年代


results matching ""

    No results matching ""