請你談談頻繁full gc怎么排查?


通常的處理,我們還是要在FULLGC時取到當時的dump文件,來分析內存里都有哪些數據占居着內存。這里有兩種辦法來獲取dump文件:

1.通過在jvm里添加參數配置:+HeapDumpBeforeFullGC,+HeapDumpAfterFullGC 這種方法需要在應用啟動前要提前配置好,如果不需要的話,還需要修改jvm參數重啟應用。

2.使用jinfo命令進行設置。(生產環境常用的方法)
無需重啟jvm,即時生效,dump文件生成后,清除JVM參數,通常fullgc 會頻繁發生,不需要一直導出dump,所以拿到一次的dump采樣后, 即可清除,然后慢慢分析dump文件

第一步,通過jps獲得java程序的pid(jps,ps等方法)

#jps
5940 Main 3012 Jps 

第二步,調用jinfo命令設置JVM參數

#jinfo -flag +HeapDumpBeforeFullGC 5940 #jinfo -flag +HeapDumpAfterFullGC 5940 使用 #jinfo -flags pid 檢查有沒有生效 

下次發生fullgc時就會生成dump文件,dump文件取到后我們就可以清除原來設置的參數:

#jinfo -flag -HeapDumpBeforeFullGC 5940 #jinfo -flag -HeapDumpAfterFullGC 5940 使用 #jinfo -flags pid 檢查有沒有生效 

dump文件的分析,我們就可以借助MAT等工具分析


免責聲明!

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



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