使用MAT做jvm的GC Roots溯源
? ? MAT是Memory?Analyzer的簡稱,它是一款功能強大的Java堆內存分析器。用于查找內存泄漏以及查看內存消耗情況。
? ? MAT是基于Eclipse開發的,是一款免費的性能分析工具。
? ? http://www.eclipse.org/mat/可下載并使用MAT。
使用MAT
1.獲取dump文件(bin文件)
方式一:命令行使用jmap
?
?
方式二:使用JVisualVM導出
? ? 捕獲的heap?dump文件是一個臨時文件,關閉JVisualVM后自動刪除,若要保留,需要將其另存為文件。
? ? 可通過以下方法捕獲heap?dump:
?? ?? ? 在左側“Application”(應用程序)子窗口中右擊相應的應用程序,選擇Heap?Dump(堆Dump)。
?? ?? ? 在Monitor(監視)子標簽頁中點擊Heap?Dump(堆Dump)按鈕。
? ? 本地應用程序的Heap?dumps作為應用程序標簽頁的一個子標簽頁打開。同時,heap?dump在左側的Application(應用程序)欄中對應一個含有時間戳的節點。右擊這個節點選擇save?as(另存為)即可將heap?dump保存到本地。
獲取以下代碼的兩次堆dump:
?
2.使用AMT
file->openFile->打開對dump文件。
?
?
?在Thread->java.lang.Thread->main線程中,我們可以發現,在將對象置為null前,有Date和ArrayList類型的GC?Roots,置為null后就沒有了。
?
總結
以上是生活随笔為你收集整理的使用MAT做jvm的GC Roots溯源的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用JProfiler查看GC Root
- 下一篇: 软考-信息系统项目管理师-信息系统项目管