2010-12-16 88 views
3

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

我在RHEL4上运行Java 1.5.0_10。

这些中的任何一个会如何杀死JVM?在生产垃圾堆时,对它的性能有什么不利影响?

回答

3

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

+0

我假设线程转储是少了很多昂贵的生产比堆转储。它甚至需要暂停VM吗? – Rich 2010-12-16 13:17:27

+0

@ Rich:很便宜,是的。它仍然需要暂停虚拟机,但它只需要很短的时间就不会注意到它。 – skaffman 2010-12-16 13:18:48

+0

非常感谢:=) – Rich 2010-12-16 13:19:45