Java服務記憶體OOM原因分析
阿新 • • 發佈:2018-12-07
1、出現問題的可能原因
對於應用來說記憶體分配太少
物件建立太多,又沒有釋放,造成記憶體洩漏嚴重,導致記憶體耗盡
申請太多的系統資源,系統資源耗盡。例如:不斷建立執行緒,不斷髮起網路連線
2、如何定位問題(可直接對dump檔案分析)
確定是否時記憶體過小
命令: jmap –heap PID
檢視物件消耗記憶體情況
命令:jmap –histo:live PID | more (執行該命令會強制執行一次fgc,自己判斷是否可用)
檢視gc情況
命令:jstat –gcutil PID 檢視gc情況
使用dump分析
命令:jmap -dump:format=b,file=a.hprof pid 匯出dump檔案
例項:jmap -dump:format=b,file=a.hprof 13888
Sz a.hprof下載a.hprof到windows
使用Memory Analyzer工具進行視覺化分析
檢視哪些類佔用資源過多,對應進行優化