
在上文的jvisualvm隻能展現出記憶體溢出,那麼怎麼能分析出哪裡出問題了呢。
1.舉個栗子
首先我們使用這段代碼使記憶體溢出。
2.dump堆日志
在發生記憶體溢出時(如果發生gc了 那麼将得不到溢出時的日志 ),點選堆 dump,會生成.hprof檔案,檢視.hprof檔案就可以分析出記憶體溢出情況。(在dump時 應用會暫停)
3.安裝MAT
我們需要一個軟體檢視.hprof檔案,下載下傳網址
Eclipse Memory Analyzer Open Source Project | The Eclipse Foundation解壓後,輕按兩下可以打開。
4.檢視.hprof檔案
打開上文的.hprof檔案。
會發現這裡有一個program。
點選 See stacktrace ,會發現報錯日志,發現已經分析出有問題的地方了。