jvm内存分析

 
   一、java程序运行时,有时会产生JavaCore及HeapDump文件,它一般发生于Java程序遇到致命问题的情况下.


   二、JavaCore是关于CPU的,而HeapDump文件是关于内存的。
JavaCore文件主要保存的是Java应用各线程在某一时刻的运行的位置,即JVM执行到哪一个类、哪一个方法、哪一个行上。它是一个文本文件,打开后可以看到每一个线程的执行栈,以stack   trace的显示。通过对JavaCore文件的分析可以得到应用是否“卡”在某一点上,即在某一点运行的时间太长,例如数据库查询,长期得不到响应,最终导致系统崩溃等情况。
HeapDump文件是一个二进制文件,它保存了某一时刻JVM堆中对象使用情况,这种文件需要相应的工具进行分析,如IBM   Heap Analyzer这类工具。这类文件最重要的作用就是分析系统中是否存在内存溢出的情况。

  三、动态生成javacore命令
     kill -3 <pid>  / jstack <pid> > javacore.txt

  四、动态生产heapdump命令
  jmap -dump:live,format=b,file=/opt/heapdump.hprof <pid>
  或
  jmap  -dump:format=b,file=heapdump.hprof  <pid>
  或
  jmap -F -dump:live,format=b,file=/opt/heapdump.hprof <pid>

  (-F                   force. Use with -dump:<dump-options> <pid> or -histo
                         to force a heap dump or histogram when <pid> does not
                         respond. The "live" suboption is not supported
                         in this mode.)
  

你可能感兴趣的:(jvm内存)