相关疑难解决方法(0)

如何从同一个 JVM 应用程序创建 JVM 应用程序的类直方图?

我想使用jmap或诊断一些意外的 OOM 错误jcmd。不幸的是,这些工具在 CI 管道中并不容易使用,因为我必须在后台启动 JVM 应用程序,以某种方式获取其 PID,然后获得正确的时间以使结果有用。

\n

因此,我尝试从 JVM 应用程序启动它们,该应用程序将被诊断为 \xe2\x80\x94 程序化自拍。

\n

在代码中的适当位置,我启动jmaporjcmd作为一个新进程:

\n
val process = ProcessBuilder("jcmd", getPID(), "GC.class_histogram")\n    .redirectOutput(ProcessBuilder.Redirect.PIPE)\n    .redirectError(ProcessBuilder.Redirect.PIPE)\n    .start()\n\nprocess.waitFor(2, TimeUnit.MINUTES)\n
Run Code Online (Sandbox Code Playgroud)\n

不幸的是,这两个工具的代码都挂起。系统监视器显示 JVM 应用程序和应用程序都jcmd在休眠。jcmd但是,当我在睡眠 JVM 上使用时:

\n
jcmd 37058 GC.class_histogram\n
Run Code Online (Sandbox Code Playgroud)\n

我立即得到所需的直方图。

\n

知道发生了什么事吗?

\n

java jvm heap-memory jcmd

2
推荐指数
1
解决办法
299
查看次数

标签 统计

heap-memory ×1

java ×1

jcmd ×1

jvm ×1