jvm導出dump文件並根據dump調優


1、獲取JVM的dump文件的兩種方式  

  1. JVM啟動時增加兩個參數:

#出現 OOME 時生成堆 dump: 
-XX:+HeapDumpOnOutOfMemoryError
#生成堆文件地址:
-XX:HeapDumpPath=/opt/jvmlogs/

  2. 發現程序異常前通過執行指令,直接生成當前JVM的dmp文件,1234是指JVM的進程號

jmap -dump:format=b,file=/var/logs/heap.hprof 1234

  獲得heap.hprof以后,就可以分析你的java線程里面對象占用堆內存的情況了。

  推薦使用Eclipse插件Memory Analyzer Tool來打開heap.hprof文件。

​ 或者使用Jprofiler來分析 

由於第一種方式是一種事后方式,需要等待當前JVM出現問題后才能生成dmp文件,實時性不高,

第二種方式在執行時,JVM是暫停服務的,所以對線上的運行會產生影響。所以建議第一種方式

2. 查看整個JVM內存狀態

  jmap -heap [pid]

3. 查看JVM堆中對象詳細占用情況
  jmap -histo [pid]

4. 導出整個JVM 中內存信息,可以利用其它工具打開dump文件分析,例如jdk自帶的visualvm工具

  jmap -dump:file=文件名.dump [pid]

  jmap -dump:format=b,file=文件名 [pid]

  format=b指定為二進制格式文件


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM