垃圾回收算法(Garbage Collection)深度解析
核心思想
- 垃圾回收核心目标:
- 定位存活对象 、回收死亡对象
- 可达性分析算法、空间复用优化
生死判定原理
- 可达性分析法(Reachability Analysis)
通过GC Roots(栈变量、静态变量、JNI引用等)构建引用链,未连接的对象视为垃圾
算法评价三维度
指标 | 定义 | 关键影响因素 |
---|---|---|
吞吐量 | 用户代码执行时间占比 | GC频率、单次GC耗时 |
最大暂停时间 | 单次STW最长持续时间 | 内存整理算法选择、堆大小 |
堆使用效率 | 有效内存空间占比 | 算法内存管理机制(碎片化程度) |
黄金三角定律:三者无法同时最优,需根据场景权衡
(缓存系统追求高吞吐、实时系统优先低延迟、嵌入式设备需高内存效率)
经典算法矩阵
1. 标记-清除(Mark-Sweep)
算法流程: