1

我在 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 打开文件时,我看不到实时对象。

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

在此处输入图像描述

4

2 回答 2

3

Live objects (vm/gc/detailed/object_count) 的事件默认禁用,因为开销是堆的完整扫描。您可以通过转到 JMC 中的窗口 -> 模板管理器并检查“堆统计”并导出设置文件来解决此问题。

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

于 2021-01-05T16:09:32.663 回答
0

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

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

于 2021-02-06T00:16:49.140 回答