生產環境-jvm內存溢出-jprofile問題排查


通常來說,分析堆內存快照(Heap Dump)是一個很好的定位手段 ,開啟了dump的參數:

-XX:+HeapDumpOnOutOfMemoryError 
有了這個參數,當我們不得不面對內存溢出異常的時候會節約大量的時間。默認情況下,堆內存快照會保存在JVM的啟動目錄下名為java_pid<pid>.hprof 的文件里(在這里<pid>就是JVM進程的進程號) 

dump的內容有2G,先進行壓縮打包,傳輸至本地(scp)

tar -czvf dump.tar java_pid4824.hprof 
tar -xzvf dump.tar

 

使用Jprofile打開dump文件

 

 

 

發現導致內存溢出的是幾個PreparedStateMent,查看其內容,發現時插入業務日志的sql

 

 

 

 最終發現是代碼for循環層級關系錯亂導致的.

 

 


免責聲明!

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



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