Skip to content

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:

  1. 计算总分配量是否超过堆大小。
  2. 用 JFR 或分配分析工具查看热点分配路径。
  3. 回到真实 GC 下验证性能和停顿。

Epsilon 更像实验工具,不是调优终点。

别急,先让缓存热一下。