jmap:无法收集堆转储

时间:2016-12-14 05:05:29

标签: java linux amazon-ec2 heap-dump jmap

我试图在AWS ec2-instance上收集堆转储。堆转储的文件大小超过6G。所以我的AWS linux Filesystem看起来像这样。

Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1      7.8G  1.7G  6.0G  22% /
devtmpfs         16G  4.9M   16G   1% /dev
tmpfs            16G     0   16G   0% /dev/shm

每当我尝试使用jmap捕获堆转储时,它使用id为7.8G的/ de / xvda1 Filesystem。由于我的堆转储很大,我试图在另一个16G的文件系统devtmpfs 16G 4.9M 16G 1% /dev中捕获heapdump。但我面临一些与用户相关的问题。 我尝试使用sudo jmap -F -dump:format=b,file=mock-dump.hprof 8089此命令收集堆转储。但是我收到了以下错误

Attaching to process ID 8089, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.111-b15
Dumping heap to mock-dump.hprof ...
Exception in thread "main" java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at sun.tools.jmap.JMap.runTool(JMap.java:201)
at sun.tools.jmap.JMap.main(JMap.java:130)
Caused by: java.lang.InternalError: Metadata does not appear to be polymorphic
at sun.jvm.hotspot.types.basic.BasicTypeDataBase.findDynamicTypeForAddress(BasicTypeDataBase.java:278)
at sun.jvm.hotspot.runtime.VirtualBaseConstructor.instantiateWrapperFor(VirtualBaseConstructor.java:102)
at sun.jvm.hotspot.oops.Metadata.instantiateWrapperFor(Metadata.java:68)

我正在运行的java进程如下: ec2-user 8089 8035 0 03:53 pts/2 00:00:09 java -jar xxxx.jar -c test.csv 所以我尝试将堆转储捕获为ec2-user sudo -u ec2-user sudo jmap -F -dump:format=b,file=mock-dump.hprof 8089 但我仍然没有看到任何变化。我无法捕获heapmdump。如果有人之前遇到过这种情况,并且可能有解决方案,这将真正有所帮助。请善意回复并帮助我。提前致谢

0 个答案:

没有答案