Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JAVA打印堆转储_Java_Heap_Heap Dump - Fatal编程技术网

JAVA打印堆转储

JAVA打印堆转储,java,heap,heap-dump,Java,Heap,Heap Dump,我使用Java1.7,我想从Java打印Heap Dump ... Object heapDump=.... ; ... System.out.println(heapDump); 有人能帮我吗?使用jmap: jmap -dump:format=b,file=heap.bin <pid> jmap-dump:format=b,file=heap.bin 请参阅。可以使用以编程方式创建堆转储。不能使用S.O.p语句直接打印堆转储。但是您可以将所有数据转储到一个文件中。 每次应

我使用Java1.7,我想从Java打印
Heap Dump

...
Object heapDump=.... ;
...

System.out.println(heapDump);
有人能帮我吗?

使用
jmap

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

请参阅。

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

不能使用S.O.p语句直接打印堆转储。但是您可以将所有数据转储到一个文件中。 每次应用程序抛出
OutOfMemoryError
时,JVM都会创建堆转储<代码>堆转储路径用于设置堆转储的位置

我们还可以从代码中使用
jmap
。假设name、pid是正在检索的文件。要从代码使用中获取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);

jmap-dump:format=b,file=/tmp/heap.bin 3894抛出exeption 3894:已知文件不安全您应该尝试将文件位置更改为可访问的位置,请参阅类似问题和解决方案:thows error java.lang.unsatifiedlinkerror:sun.management.Flag.initialize()V@javagc你到底做了什么?您有哪个热点版本/供应商?