jvm生成dump文件並導出


在生產環境中,有時候會遇到Java應用程序因發生OOM而導致服務掛掉的情況,可以通過dump文件來分析jvm信息。

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

 

1.1 JVM啟動時增加兩個參數

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

1.2 通過指令直接生成當前JVM的dump文件

jmap -dump:format=b,file=/tmp/heap.jmap JAVA_PID

 說明:在pod里執行,需要先進入到pod查看Java進程的PID,然后執行該指令,然后把dump文件復制到本地

kubectl exec -it
ps -ef
jmap
kubectl cp

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

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

2. 查看JVM信息

2.1 查看整個JVM內存狀態

jmap -heap [pid]

2.2 查看JVM堆中對象詳細占用情況

jmap -histo [pid]

 

參考博客 https://www.cnblogs.com/ainimore/p/13345831.html


免責聲明!

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



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