如何在命令行上使用JFR记录分配?

时间:2016-01-19 16:31:49

标签: profiling jmc jfr

我有一个我使用Java Mission Control创建的配置文件,该配置文件已启用分配配置文件。当我从JMC UI使用它来记录时,一切正常,我得到了结果。

但是,导出设置并尝试在命令行上使用JFR进行录制后,即使我收到其他分析信息,也无法记录分配。

我使用以下设置运行录制: JAVA_OPTS="$JAVA_OPTS -XX:+UnlockCommercialFeatures -XX:+FlightRecorder -XX:FlightRecorderOptions=defaultrecording=true,settings='<path_to_settings>/settings.jfc',dumponexit=true,dumponexitpath=<output>" java -jar stuff

在JMC中加载录音并检查内存部分时,我会看到消息Event type 'Allocation in new TLAB' is not enabled in this recording

设置文件位于https://gist.github.com/jmiettinen/1976f9bbe156ecb5e232,并且已启用相关设置java/object_alloc_in_new_TLABjava/object_alloc_outside_TLAB

我在这里遗漏了什么吗?我正在运行1.8.0_66,并希望从应用程序的开始直到它被停止为止。

2 个答案:

答案 0 :(得分:6)

在Jfokus的@jmiettin上验证了这些标志可以解决这个问题:

如果您希望使用特殊设置进行连续录制并使其在退出时转储数据,这些选项似乎对我有用:-XX:FlightRecorderOptions = dumponexit = true,dumponexitpath = rec.jfr -XX:StartFlightRecording = defaultrecording =真,设置= d:/tmp/wop.jfc

区别在于将defaultrecording和settings参数放在-XX:StartFlightRecording标志之后。

答案 1 :(得分:1)

您运行的是哪个版本的JDK?

在7u76和8u20中修复了一个错误,如果defaultrecording = true,则不会遵守settings参数。