跳转至
用户认证 - eMac Tech Docs

用户认证

重要提醒

为了您的权益以及学习体验,请不要外借账号!

如果您没有账号或忘记密码,请联系管理员重置密码。

请输入您的登录信息

JVM垃圾回收机制

GC算法详解

flowchart TD
    GC算法[GC算法]
    GC算法 --> 标记_清除[标记-清除]
    GC算法 --> 标记_整理[标记-整理]
    GC算法 --> 复制算法
    GC算法 --> 分代收集

垃圾收集器对比

收集器 算法 适用区域 特点
Serial 复制 新生代 单线程,STW
ParNew 复制 新生代 多线程版Serial
Parallel Scavenge 复制 新生代 吞吐量优先
Serial Old 标记-整理 老年代 Serial老年代版
Parallel Old 标记-整理 老年代 Parallel Scavenge老年代版
CMS 标记-清除 老年代 低延迟,并发收集
G1 分代+分区 全堆 可预测停顿

GC日志分析

# 典型GC日志
[GC (Allocation Failure) [PSYoungGen: 65536K->10752K(76288K)] 65536K->15488K(251392K), 0.0118329 secs]

# 关键字段说明:
- PSYoungGen:Parallel Scavenge收集器新生代
- 65536K->10752K:回收前->回收后大小
- (76288K):新生代总容量
- 65536K->15488K:堆回收前后大小
- (251392K):堆总容量
- 0.0118329 secs:耗时

调优案例

# 电商系统配置示例
-Xms4g -Xmx4g 
-XX:NewRatio=1 
-XX:SurvivorRatio=8 
-XX:+UseG1GC 
-XX:MaxGCPauseMillis=200 
-XX:InitiatingHeapOccupancyPercent=45

最佳实践

  1. 小内存应用(4G内):CMS
  2. 大内存应用(8G+):G1
  3. 吞吐优先:Parallel Scavenge+Parallel Old
  4. 避免频繁Full GC
  5. 合理设置新生代比例