Java中的dmp文件?

时间:2014-04-08 06:14:20

标签: java c++ jvm dmp

我知道可以从C ++项目转储.dmp文件。这个dmp文件可以由Visual Studio打开,这非常有用,因为这样你就可以在调用堆栈中查找变量值。

JVM是否也存在这种机制?

3 个答案:

答案 0 :(得分:2)

您可以使用-XX:HeapDump JVM options

使用以下JVM选项:

-XX:-HeapDumpOnOutOfMemoryError 
-XX:HeapDumpPath="/tmp"

JVM会将堆的内容转储到指定目录中的文件。请注意,这只会在抛出OutOfMemoryError时发生,因为如果由于不同的原因导致JVM崩溃,则不需要转储。

您可能还想阅读http://docs.oracle.com/javase/6/docs/technotes/tools/share/jhat.html一次

答案 1 :(得分:1)

如何获取JVM转储?

  1. 只要您想获得JVM转储,就可以使用jmap

    jmap -dump:format = b,file = / path / to / store / dumpfile jvmpid

  2. 您可以在启动时添加JVM选项以在OOM时获取JVM转储。

    -XX:+ HeapDumpOnOutOfMemoryError -XX:HeapDumpPath = /路径/到/存储/转储文件

  3. 如何分析jvm转储文件?

    1. 使用Memory Analyzer (MAT)
    2. mat

        

      Eclipse Memory Analyzer是一个快速且功能丰富的Java堆分析器,可帮助您查找内存泄漏并减少内存消耗。

      2.使用IBM HeapAnalyzer

      enter image description here

        

      HeapAnalyzer允许通过其启发式搜索引擎找到可能的Java™堆泄漏区域,并分析Java应用程序中的Java堆转储。

答案 2 :(得分:0)

您可以远程调试(例如with Eclipse)Java应用程序,它允许您查看堆栈和变量内容。

或者您可以进行线程转储(例如使用jstack)。但这不包括变量。