JVM立即回收机制
Jvm垃圾回收机制
一、垃圾回收对象
根搜索算法:判断对象存活还是非存活的算法
根对象:栈内存中直接引用的对象
二、垃圾回收算法
1.标记-清除算法
特点:标记完成后,统一回收
缺点:会产生大量不连续的内存碎片
2.标记-压缩算法
特点:标记后将存活对象移动到一起,清除以外的内存
老年代使用此算法
3.复制算法
特点:将内存分为两半,一般使用完,将存活对象,转移到另外一半内存,清理原内存
缺点:内存使用率低
新生代使用此算法
4.分代收集算法
新生代采用复制算法
老年代采用标记-压缩算法
三、垃圾回收器
1. Serial收集器(串行)
单线程收集器
用户线程全部停止(Stop the world)
Client模式下,新生代默认收集器
优点:简单、高效
2.ParNew收集器(并行)
并行收集器,Serial收集器的多线程版本
Server模式下Jvm默认的新生代收集器
默认开启的垃圾回收线程与cpu核数一致
3.CMS收集器(并发)
并发收集器(ConcurrentMarkSweep)
采用了标记-清除、标记-压缩算法
并发收集、低停顿
缺点: 消耗cpu、会产生内存碎片、浮动垃圾(Concurrent Mode Failure)
4.G1(时间优先)