如何获取JVM核心dump(core dump)?

想通过sa-jdi.jar中的ClassDump将虚拟机加载的类都dump下来。

ClassDump支持从jvm进程或者jvm core dump中dump类。

线上应用,不该直接对pid进行dump,想要先获取一个core dump。

在visual vm中,可以读取core dump文件。

clipboard.png

但是不知道如何获取core dump。
阅读 6.5k
1 个回答
kill -3 pid

linux 下不同应用的响应行为不太一样,对jvm来说默认会在标准输出显示出来
可以通过 >重定向到文件。

$ jps
20226 jar
20383 Jps
$ kill -3 20226

2018-08-30 13:09:04
Full thread dump OpenJDK 64-Bit Server VM (25.181-b13 mixed mode):

"TimerQueue" #23 daemon prio=5 os_prio=0 tid=0x00007fa70c04f000 nid=0x4f1e waiting on condition [0x00007fa72056d000]
   java.lang.Thread.State: WAITING (parking)
    at sun.misc.Unsafe.park(Native Method)
    - parking to wait for  <0x000000076d530c48> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
    at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
    at java.util.concurrent.DelayQueue.take(DelayQueue.java:211)
    at javax.swing.TimerQueue.run(TimerQueue.java:174)
    at java.lang.Thread.run(Thread.java:748)

"DestroyJavaVM" #22 prio=5 os_prio=0 tid=0x00007fa79400a800 nid=0x4f03 waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"AWT-EventQueue-0" #17 prio=6 os_prio=0 tid=0x00007fa79461b800 nid=0x4f19 waiting on condition [0x00007fa7222e7000]
   java.lang.Thread.State: WAITING (parking)
    at sun.misc.Unsafe.park(Native Method)
    - parking to wait for  <0x00000006c6201be0> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
    at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
    at java.awt.EventQueue.getNextEvent(EventQueue.java:554)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:187)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
......
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题