Java 飞行记录器 - 无活动对象

Java Flight Recorder - no Live Objects

我是 运行 JFR JDK 1.8_261.

我 运行 我的应用程序使用这些 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 对象 (vm/gc/detailed/object_count) 的事件默认情况下由于开销而禁用,即对堆进行全面扫描。您可以通过转至 JMC 中的 Window -> 模板管理器并检查“堆统计信息”并导出设置文件来解决此问题。

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

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

有关此的更多信息,请参见 here