2016-03-29 73 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參數也傳播到分叉基準。