gpt4 book ai didi

java - 如何在 Java 应用程序中创建堆转储?

转载 作者:行者123 更新时间:2023-12-01 19:32:32 33 4
gpt4 key购买 nike

我想创建一个用于教育目的的 Java 堆转储分析器项目。我更喜欢在应用程序中捕获转储文件,而不是将转储文件作为参数。但我不知道该怎么做。

我想通过提供 PID 来使用运行时运行 jmap -dump... 命令,但我不确定这是否是正确的方法。你能帮我吗?

最佳答案

使用Dynamic Attach API .

您仍然需要指定保存转储的文件名。

import com.sun.tools.attach.VirtualMachine;
import sun.tools.attach.HotSpotVirtualMachine;

import java.io.InputStream;

public class HeapDump {

public static void main(String[] args) throws Exception {
String pid = args[0];
HotSpotVirtualMachine vm = (HotSpotVirtualMachine) VirtualMachine.attach(pid);

try (InputStream in = vm.dumpHeap("/tmp/heapdump.hprof")) {
byte[] buf = new byte[200];
for (int bytes; (bytes = in.read(buf)) > 0; ) {
System.out.write(buf, 0, bytes);
}
} finally {
vm.detach();
}
}
}

关于java - 如何在 Java 应用程序中创建堆转储?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59164729/

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