【问题标题】:How to record allocations with JFR on command line?如何在命令行上使用 JFR 记录分配?
【发布时间】:2016-04-25 05:39:46
【问题描述】:

我有一个使用 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_TLABenabled。

我在这里遗漏了什么吗?我正在运行1.8.0_66,并希望从应用程序启动到停止进行连续录制。

【问题讨论】:

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

标签: profiling jmc jfr


【解决方案1】:

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

在 7u76 和 8u20 中修复了一个错误,如果 defaultrecording=true,设置参数将不受尊重。

【讨论】:

    【解决方案2】:

    在 Jfokus 与 @jmiettin 验证这些标志可以解决问题:

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

    不同之处在于将 defaultrecording 和 settings 参数放在 -XX:StartFlightRecording 标志之后。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-19
      • 2017-04-27
      • 1970-01-01
      • 2020-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多