jmap轉換gcore的dump文件

找java進程

 

ps aux|grep java

yyy    4990  0.3  2.3 3098560 191312 ?      Sl   Aug29  16:11 /usr/xxx/jdk1.6.0_29/bin/java -Xms128m -Xmx768m -jar /usr/share/projectlibre/projectlibre.jar --silentlyFail true

 

 

使用gdb生成gcore快照文件

 

sudo gdb -q --pid=4990
【此處省略亂七八糟的輸出內容】
......
0x00007ffc1672366b in pthread_join (threadid=140720663160576, thread_return=0x7fffe8470210) at pthread_join.c:92
92	pthread_join.c: No such file or directory.
(gdb) generate-core-file 
warning: target file /proc/4990/cmdline contained unexpected null characters
Saved corefile core.4990
(gdb) detach 
Detaching from program: /usr/xxx/jdk1.6.0_29/bin/java, process 4990
(gdb) quit

 

命令解釋:
gdb -q --pid=4990
 
--pid後面跟着的是jvm的進程id
(gdb) generate-core-file 
 
這裏調用命令生成gcore的dump文件
(gdb) detach 
 
detach是用來斷開與jvm的連接的
(gdb) quit
 

quit簡單了,退出gdb模式

方法1

用jmap轉換gcore的dump文件變成hprof

sudo /usr/xxx/jdk1.6.0_29/bin/jmap -dump:format=b,file=heap.hprof /usr/xxx/jdk1.6.0_29/bin/java core.4990
Attaching to core core.4990 from executable /usr/xxx/jdk1.6.0_29/bin/java, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 20.4-b02
Dumping heap to heap.hprof ...
Finding object size using Printezis bits and skipping over...
Heap dump file created

 

 

接着就生成了heap.hprof這個文件

 

注意:jmap、java等指令必須是與啓動4990進程一致的版本纔可以成功轉換,否則還是會有問題。

 

可以使用jvisualvm打開 heap.hprof查看jvm的快照信息。

 

方法2

可以直接通過jvisualvm的主菜單直接點擊 Add VM Coredump 來加載gcore的dump文件進行自動轉換,但也是需要jdk版本相同纔可以,這個在點擊該菜單選項之後的彈出窗口裏會需要進行指定。

 

參考文章:

  1. http://www.tuicool.com/articles/JbyyUr
  2. http://stackoverflow.com/questions/9981080/core-dump-taken-with-gcore-jmap-conversion-to-hprof-file-format-fails-with-erro
  3. http://blog.163.com/yandong_8212/blog/static/1321539142010108112559362/
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章