是的,这是可能的,它很简单,我推荐它作为最佳实践一直这样做!有可用的数据来解释正在发生的事情总是好的,而无需花费额外的时间来重现问题。
我编写了自己的 JMH 分析器来使用 JFR(Java Flight Recorder):JmhFlightRecorderProfiler,它将在基准测试结束时启动 JMH 分析并将数据保存到文件中。您可以使用 JDK 附带的 Java Mission control 打开此文件。
以下是开始基准测试并使用它的方法(完整示例):
Options opt = new OptionsBuilder()
.include(".*")
.addProfiler(JmhFlightRecorderProfiler.class)
.jvmArgs("-Xmx256m", "-Xms256m", "-XX:+UnlockCommercialFeatures",
"-Djmh.stack.profiles=" + destinationFolder,
"-Djmh.executor=FJP",
"-Djmh.fr.options=defaultrecording=true,settings=" + profile)
.result(destinationFolder + "/" + "benchmarkResults.csv")
.resultFormat(ResultFormatType.CSV)
.warmupIterations(10)
.measurementIterations(10)
.forks(1)
.build();
new Runner(opt).run();
我在标准构建期间运行基准测试,我使用Jenkins JMH 插件来监控/趋势基准测试结果/构建,如果观察到任何降级,我可以使用基准配置文件来调查潜在原因。