使用飞行记录器和jdk任务控制获取更多方法计数

ntjbwcob  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(406)

背景

我试图用flight recorder检查我的java批处理应用程序,以提高启动性能。现在发射大约需要20秒,而我正在努力使它不到10秒。
这个应用程序是用springboot2.2和springbatch构建的,运行在jdk11上。我使用的是飞行记录器而不是visualvm,因为jdk 11不包含现成的visualvm(在检查环境中安装额外的工具并非不可能,但受到限制)。

问题

我想我可以用flight recoder检查发射过程,所以我运行了如下应用程序:

java -XX:StartFlightRecording=filename=demo.jfr,settings=profile -jar .\build\libs\demo-0.0.1-SNAPSHOT.jar -spring.batch.job.names importUserJob -spring.batch.job.enabled false

但是任务控制在“方法分析”面板中只显示大约100个计数。了解整个发射过程的发展趋势,检验哪种发射方式花费的时间最多,还太少。

问题

如何使用飞行记录器和jdk任务控制进行更多方法计数?中的哪个参数 .jfc 文件影响方法计数的量?

ff29svar

ff29svar1#

如果您运行的是JDK13或更高版本,则可以将采样模式设置为“可笑”。
它将每毫秒采样一次线程。您可以进入窗口->模板管理器并选择“可笑”模式进行方法分析,然后导出.jfc文件并用它启动应用程序:

$ java -XX:StartFlightRecording:settings=/settings/my.jfc ...

或者您也可以进入javahome/lib/jfr/并将default.jfc复制到一个新文件中,然后编辑显示jdk.executionsample的句点。您可以设置的最小值为1毫秒。
会增加开销,但你会得到更多的样品。

相关问题