架构师训练营第九周”性能优化三“作业
Q:请简述 JVM 垃圾回收原理。
JVM 垃圾回收算法
垃圾对象识别
JVM 通过一种可达性分析算法进行垃圾对象的识别。对可引用的对象进行标记,所有标记的对象都是在使用的,非标记对象认为可回收
分代回收算法
JVM 内部不同类型对象回收频次是有区别的,因此分为新生代、老年代。
新生代:存储最近分配的对象,这种一般更可能立即回收,比较频繁
老年代:对象生命周期更长,回收不那么频繁
新生代对象如果经过多轮回收后还存在,会迁移到老年代
新生代内部分为 Eden 区、From 区、To 区,采用复制回收机制
垃圾回收器算法
串行回收器:单线程回收,会堵塞所有线程运行进行垃圾回收(STW:Stop-The-World)
并行回收器:多线程并行回收,相对于串行回收器,回收时间短,但 STW 问题依然严重
并发回收器 CMS:多线程分阶段回收,只有标记阶段会出现 STW
G1:多线程并行;与应用程序交替执行,不会完全堵塞线程应用程序;分代 GC;空间整理
评论