我有一些JMH基准,我试图分析。我想启用GC日志记录来查看生成了多少垃圾,但我无法弄清楚如何传递JVM参数。我知道JMH在分叉的JVM中运行基准测试,所以对我来说,如何做到这一点并不是很明显。我使用SBT。
答案 0 :(得分:11)
如果我正确读取sbt-jmh docs,它会将应用程序选项传递给jmh:run ...
的JMH runner。因此,让JMH命令行接受--jvmArgs "..."
,我会尝试jmh:run --jvmArgs "-XX:+PrintGCDetails"
。或者,正如@apangin所提到的,添加@Fork(jvmArgsAppend = "-XX:+PrintGCDetails")
。
但是对于您的特定用例 - “查看生成了多少垃圾” - 使用由-prof gc
激活的捆绑GC分析器可能更好。请参阅JMHSample_35_Profilers.java#l71上的示例。
答案 1 :(得分:9)
使用@Fork
注释:
@Benchmark
@Fork(jvmArgsAppend = "-XX:+PrintGCDetails")
public void someBenchmark() {
...
}
请注意,传递给JMH的JVM参数也会传播到分叉基准。