写点什么

架构师训练营第九周”性能优化三“作业

用户头像
随秋
关注
发布于: 2021 年 01 月 24 日

Q:请简述 JVM 垃圾回收原理。

JVM 垃圾回收算法

垃圾对象识别

JVM 通过一种可达性分析算法进行垃圾对象的识别。对可引用的对象进行标记,所有标记的对象都是在使用的,非标记对象认为可回收

分代回收算法

JVM 内部不同类型对象回收频次是有区别的,因此分为新生代、老年代。

  • 新生代:存储最近分配的对象,这种一般更可能立即回收,比较频繁

  • 老年代:对象生命周期更长,回收不那么频繁

  • 新生代对象如果经过多轮回收后还存在,会迁移到老年代

  • 新生代内部分为 Eden 区、From 区、To 区,采用复制回收机制

垃圾回收器算法

  • 串行回收器:单线程回收,会堵塞所有线程运行进行垃圾回收(STW:Stop-The-World)

  • 并行回收器:多线程并行回收,相对于串行回收器,回收时间短,但 STW 问题依然严重

  • 并发回收器 CMS:多线程分阶段回收,只有标记阶段会出现 STW

  • G1:多线程并行;与应用程序交替执行,不会完全堵塞线程应用程序;分代 GC;空间整理

用户头像

随秋

关注

还未添加个人签名 2018.04.27 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营第九周”性能优化三“作业