JAVA打印堆转储

时间:2013-11-25 09:34:38

标签: java heap heap-dump

我使用Java 1.7,我想从java

打印Heap Dump
...
Object heapDump=.... ;
...

System.out.println(heapDump);

有人能帮助我吗?

3 个答案:

答案 0 :(得分:3)

使用jmap

jmap -dump:format=b,file=heap.bin <pid>

参考Java 7 jmap tutorial

答案 1 :(得分:0)

您可以使用HotSpotDiagnosticMXBean以编程方式创建堆转储。

答案 2 :(得分:0)

您无法使用S.O.P声明直接打印堆转储。但是您可以将所有数据转储到文件中。 每次应用程序抛出OutOfMemoryError时,JVM都会创建堆转储。 HeapDumpPath用于设置堆转储的位置。

我们也可以使用代码中的jmap。假设name,pid是fileds检索。要从代码使用中获取pid,我们需要使用java.lang.management.ManagementFactory

String name = ManagementFactory.getRuntimeMXBean().getName();
String pid = name.substring(0, name.indexOf("@"));
After that we can start jmap process like this:
String[] cmd = { "jmap", "-dump:file=D:\\temp\\heapdumps\\dump.bin", pid };
Process p = Runtime.getRuntime().exec(cmd);