禁用Linux Core转储时执行Java堆转储

时间:2011-03-21 06:03:20

标签: java linux

当Linux Core转储本身被禁用时,是否有可能获得Java堆转储?

由于 丹努什

4 个答案:

答案 0 :(得分:4)

是。 Java堆转储和Linux核心转储由完全不同的机制生成。

答案 1 :(得分:1)

Java堆转储独立于Linux核心转储。

要获得堆转储,您可以使用:

  • -XX:+HeapDumpOnOutOfMemory
  • JConsole(MBeans→com.sun.management→HotSpotDiagnostic→operations→dumpHeap。在第一个文本框中输入一个唯一的名称 - 这是转储将保存在其中的文件名)
  • VisualVM的
  • Eclipse MAT

获得转储后,您可以使用Eclipse MAT等工具对其进行分析。

答案 2 :(得分:1)

有很棒的工具,例如Eclipse MATHeap Hero分析堆转储。但是,您需要为这些工具提供以正确的格式和正确的时间点捕获的堆转储。

本文为您提供了捕获堆转储的多个选项。但是,我认为前三个是有效的选择,而其他三个则是个不错的选择。

1。 jmap

这是调用jmap的方法:

jmap -dump:format=b,file=<file-path> <pid> 

where
pid: is the Java Process Id, whose heap dump should be captured
file-path: is the file path where heap dump will be written in to.

2。 HeapDumpOnOutOfMemoryError

示例用法:

-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/opt/tmp/heapdump.bin

Multiple options to capture Java heap dumps

答案 3 :(得分:0)

OS核心转储与Java堆转储无关。操作系统转储控制着操作系统,Java堆转储控制着JRE