我使用Java 1.7,我想从java
打印Heap Dump
...
Object heapDump=.... ;
...
System.out.println(heapDump);
有人能帮助我吗?
答案 0 :(得分:3)
答案 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);