Appearance
Epsilon GC
Epsilon 是“不回收”的垃圾回收器。它只负责内存分配,不做对象回收。它不是通用生产 GC,而是用于性能实验、分配压测和短生命周期进程的特殊工具。
定位
| 维度 | 说明 |
|---|---|
| 核心目标 | 去掉 GC 回收干扰 |
| 执行方式 | 只分配,不回收 |
| 适合场景 | 性能基准、分配速率测试、短生命周期任务 |
| 不适合场景 | 常驻服务、普通生产应用 |
启用
bash
-XX:+UnlockExperimentalVMOptions
-XX:+UseEpsilonGC示例:
bash
java -Xms512m -Xmx512m \
-XX:+UnlockExperimentalVMOptions \
-XX:+UseEpsilonGC \
-jar benchmark.jar堆用完后程序会 OOM,这是预期行为。
使用场景
基准测试
用于观察没有 GC 回收干扰时,代码本身的分配和执行表现。
短生命周期任务
如果进程生命周期很短,且总分配量明确小于堆大小,可以避免 GC 回收成本。
分配压力分析
用于估算应用分配速度和对象创建量。
风险
- 不回收对象,堆满必然 OOM。
- 不适合常驻服务。
- 测试结果不能直接代表真实 GC 下的线上表现。
- 容易掩盖对象生命周期问题。
排查
如果 Epsilon 下 OOM:
- 计算总分配量是否超过堆大小。
- 用 JFR 或分配分析工具查看热点分配路径。
- 回到真实 GC 下验证性能和停顿。
Epsilon 更像实验工具,不是调优终点。
