我们有一个生产Java系统,它比平时使用更多的线程。我想使用kill -3 pid
来获取threaddump,如果需要,可以使用JConsole获取二进制堆转储,以便在Eclipse MAT中进行离线分析。
我在RHEL4上运行Java 1.5.0_10。
这些中的任何一个会破坏JVM的可能性有多大?在转储产生时对其性能的不利影响如何?
答案 0 :(得分:3)
它不会杀死VM,但生成堆转储可能会在转储过程中冻结JVM,因为它必须转储一致的快照。转储完成后,它将从它们被暂停的位置恢复所有线程。所以它不会具有破坏性,但它会暂时停止处理。
答案 1 :(得分:-2)
我使用下面的命令来获取堆转储
jmap -heap pid
详细信息 - http://docs.oracle.com/javase/6/docs/technotes/tools/share/jmap.html