在生产系统上生成线程转储的安全性

时间:2010-12-16 13:08:42

标签: jvm

我们有一个生产Java系统,它比平时使用更多的线程。我想使用kill -3 pid来获取threaddump,如果需要,可以使用JConsole获取二进制堆转储,以便在Eclipse MAT中进行离线分析。

我在RHEL4上运行Java 1.5.0_10。

这些中的任何一个会破坏JVM的可能性有多大?在转储产生时对其性能的不利影响如何?

2 个答案:

答案 0 :(得分:3)

它不会杀死VM,但生成堆转储可能会在转储过程中冻结JVM,因为它必须转储一致的快照。转储完成后,它将从它们被暂停的位置恢复所有线程。所以它不会具有破坏性,但它会暂时停止处理。

答案 1 :(得分:-2)

我使用下面的命令来获取堆转储

jmap -heap pid

详细信息 - http://docs.oracle.com/javase/6/docs/technotes/tools/share/jmap.html