4

我正在尝试使用位于 /Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/bin/jcmd (Mac OS X) 的 jcmd 二进制文件运行 Java Flight Recorder。是否有命令行选项来启用与 Start Flight Recording UI 上的 Heap Statistics 选项相对应的堆指标:

在此处输入图像描述

4

1 回答 1

5

没有命令行或 jcmd 选项来启用堆统计

该事件在默认和配置文件设置文件中都被禁用,因为它在遍历堆时会引发安全点。

但是,您可以在 JMC、Windows -> 模板管理器中使用模板管理器。并检查您想要的设置,即堆统计,然后导出文件。然后使用 jcmd 应用它

jcmd <pid> JFR.start settings=my-configuration-file.jfc

如果您尝试诊断内存泄漏,可能有兴趣知道 Oracle JDK 10+ 和 OpenJDK 11+ 记录旧对象样本事件,该事件收集通常对解决 Java 内存泄漏更有用的信息(并且没有安全点高架)。后来的 JDK 有选项 path-to-gc-roots=true(对于 jcmd 和 -XX:StartFlightRecording),它可以提供额外的信息来解决内存泄漏。然而,该选项将导致与堆统计类似的开销,但比 HPROF 转储的开销要少得多,因为写入磁盘的数据量要少得多。

于 2019-01-26T14:28:43.197 回答