当前位置: 首页 > 知识库问答 >
问题:

如何通过命令行为jfr启用堆指标

澹台展鹏
2023-03-14

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

共有2个答案

华季同
2023-03-14

使用set=profile运行jcmd会使记录包含有关分配的信息。正如其他评论指出的那样,它并不完全对应于堆统计,但它可以让您在JMC中看到分配火焰图,这就是我在这里寻找的。请参阅https://docs.oracle.com/javacomponents/jmc-5-5/jfr-command-reference/diagnostic-command-reference.htm#resourceid-15322-48C8362A

我在导出模板时遇到了问题,正如其他评论所建议的那样。如果您想要堆统计信息,您可以复制profile.jfc并按照https://stackoverflow.com/a/55449770/12013214中的说明启用它

狄信然
2023-03-14

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 <pid> JFR.start settings=my-configuration-file.jfc

如果您试图诊断内存泄漏,可能需要知道Oracle JDK 10和OpenJDK 11记录了旧对象示例事件,该事件收集的信息通常对解决Java内存泄漏更有用(并且没有安全点开销)。后来的JDK有一个选项路径,即gc root=true(对于jcmd和-XX:StartFlightRecording),它可以提供额外的信息来解决内存泄漏问题。然而,该选项将产生与堆统计相似的开销,但由于写入磁盘的数据量较少,因此开销远低于HPROF转储。

 类似资料:
  • 我有一个spring启动应用程序,我需要通过进入文件夹目录并通过命令行启动我的web应用程序来启动它。我有一门课叫应用。java及其内部代码如下所示。 我设置了类路径,然后试图运行命令"",但我得到了这个错误消息""

  • 我使用Java任务控制创建了一个配置文件,该配置文件启用了分配分析。当我从JMC UI使用它进行记录时,一切正常,我得到了结果。 然而,在导出设置并尝试在命令行上使用JFR记录之后,我没有记录分配,即使我得到了其他分析信息。 我使用以下设置运行录制:

  • 我想使用Windows 10上的命令行中的,以及许多其他Linux工具。我知道有GnuWin32和其他二进制替代品,但没有一个能像Linux的Windows子系统(WSL)那样优雅地工作;包括更新机制。 使用WSL,可以调用

  • 问题内容: 我正在尝试通过Java执行命令行参数。例如: 上面的命令打开命令行,但是不执行或。有任何想法吗?我正在运行Windows XP,JRE6。 (我已经对问题进行了更详细的修订。以下答案很有用,但不能回答我的问题。) 问题答案: 你发布的代码使用自己的命令启动三个不同的过程。要打开命令提示符然后运行命令,请尝试以下操作(请勿自己尝试):

  • 一些注意事项: 1。我最初使用的TestNG jar来自java项目中的maven repo。下面的所有方法都是用maven testNG jar和新的TestNG6.9.12下载进行测试的。 2。我可以从Eclipse中运行这个文件。只有当我尝试从命令行运行时才有问题。 3。最终目标是通过javafx应用程序按钮触发命令行来运行测试。如果提供的解决方案避免在cmd中键入绝对路径,因为应用程序将在

  • 本文向大家介绍通过什么命令指定命令提示符?相关面试题,主要包含被问及通过什么命令指定命令提示符?时的应答技巧和注意事项,需要的朋友参考一下 答案: \u:显示当前用户账号 \h:显示当前主机名 \W:只显示当前路径最后一个目录 \w:显示当前绝对路径(当前用户目录会以~代替) $PWD:显示当前全路径 $:显示命令行’$'或者’#'符号 #:下达的第几个命令 \d:代表日期,格式为 week da