JVM垃圾回收机制(GC)
- 内存分区与GC类型
堆内存分代:
新生代(Young Generation):Eden区、Survivor区(S0/S1)
老年代(Old Generation):长期存活对象
元空间(Metaspace):类元数据(替代永久代)
常见GC算法:
GC类型 特点 适用场景
Serial GC 单线程,STW时间长 客户端小内存应用
Parallel GC 多线程并行,吞吐量优先 服务端多核高吞吐场景
CMS GC 并发标记清除,低延迟 响应速度敏感的老年代回收
G1 GC 分区化回收,可预测停顿时间 大内存、低延迟要求
2. GC调优参数
常用JVM参数示例
-XX:+UseG1GC # 启用G1回收器
-XX:MaxGCPauseMillis=200 # 目标最大停顿时间
-XX:NewRatio=3 # 老年代与新生代比例(默认2)
-XX:SurvivorRatio=8 # Eden与Survivor区比例
3. 内存泄漏排查
工具:jmap导出堆快照、jvisualvm分析对象引用链
典型场景:未关闭资源(数据库连接)、静态集合长期持有对象