将JVM参数传递给JMH

时间:2016-03-29 19:29:00

标签: jvm sbt jmh

我有一些JMH基准,我试图分析。我想启用GC日志记录来查看生成了多少垃圾,但我无法弄清楚如何传递JVM参数。我知道JMH在分叉的JVM中运行基准测试,所以对我来说,如何做到这一点并不是很明显。我使用SBT

2 个答案:

答案 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参数也会传播到分叉基准。