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

Ric*_*ich 4 jvm

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

我在 RHEL4 上运行 Java 1.5.0_10。

其中任何一个会杀死 JVM 的可能性有多大?产生转储时对其性能的不利影响如何?

ska*_*man 6

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