2016-03-29 39 views
5

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

+0

JMH传递传递给它的任何参数。你可以将它们添加到命令行中, –

回答

7

如果我正确读取sbt-jmh文档,它会将应用程序选项传递给与jmh:run ...的JMH转轮。因此,拥有该JMH命令行接受--jvmArgs "...",我会尝试做jmh:run --jvmArgs "-XX:+PrintGCDetails"。或者,@apangin提到,请添加@Fork(jvmArgsAppend = "-XX:+PrintGCDetails")

但是对于您的特定使用情况 - “查看产生了多少垃圾” - 使用捆绑的GC分析器可能更好,因为它使用-prof gc激活。请参阅JMHSample_35_Profilers.java#l71上的示例。

5

使用@Fork注释:

@Benchmark 
@Fork(jvmArgsAppend = "-XX:+PrintGCDetails") 
public void someBenchmark() { 
    ... 
} 

注意,传递给江铃控股JVM参数也传播到分叉基准。