Java Flight Recorder - 没有活动对象

问题描述

我在 JDK 1.8_261 上运行 JFR。

我正在使用这些 VM 选项运行我的应用程序:

-XX:+UseG1GC -XX:+UnlockCommercialFeatures -XX:+FlightRecorder
-XX:FlightRecorderOptions=maxage=5h,defaultrecording=true,loglevel=info,dumponexit=true,settings=/usr/java/jdk1.8.0_261-amd64/jre/lib/jfr/profile.jfc,dumponexitpath=/tmp/a.jfr

这是我正在使用的 profile.jfc 文件https://gist.github.com/oripwk/e7d598f90e567a658cd767b16379f281

但是,如您在屏幕截图中看到的那样,使用 JDK Mission Control 打开文件时我看不到 Live Objects。

我需要做什么才能启用活动对象?

enter image description here

解决方法

Live 对象 (vm/gc/detailed/object_count) 的事件由于开销,堆的完整扫描而默认禁用。您可以通过转到 JMC 中的 Window -> Template Manager 并检查“Heap Statistics”并导出设置文件来解决此问题。

或者您可以手动编辑 .jfc 文件并将 vm/gc/detailed/object_count enabled 设置为 true。

,

要使用该页面,您需要一个 JFR 记录,其中包含“旧对象示例”方法并在启用“GC 根路径”选项的情况下转储。这是因为该页面显示的引用链需要在全局安全点操作中生成,因此仅在需要时才收集(并且通常有很短的时间限制)。

可以在 here 中找到有关此的更多信息。