1. 程式人生 > >Java服務記憶體OOM原因分析

Java服務記憶體OOM原因分析

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工具進行視覺化分析

        檢視哪些類佔用資源過多,對應進行優化