gpt4 book ai didi

java - 如何通过命令行启用 jfr 的堆指标

转载 作者:行者123 更新时间:2023-12-02 07:32:22 27 4
gpt4 key购买 nike

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

enter image description here

最佳答案

JDK 17

$ java -XX:StartFlightRecording:jdk.ObjectCount#enabled=true ...

$ jcmd <pid> JFR.start jdk.ObjectCount#enabled=true

JDK 9 - JDK 16

对于 JDK 17 之前的 JDK,没有命令行或 jcmd 选项来启用堆统计信息。

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

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

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

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

关于java - 如何通过命令行启用 jfr 的堆指标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54377288/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com