內存泄漏分析利器MAT

MAT:Memory Analyzer Tool

           是一個快速並且功能強大的 java heap 分析器,能分析查找內存泄漏等問題

           獲取內存快照存儲的dump文件,就可以利用它來分析

           下載地址:http://www.eclipse.org/mat/downloads.php


基本概念:

        Shallow Size:對象自身佔用的內存大小

        Retained Size:當前對象大小+它直接/間接引用到的對象大小,兩者之和


通過MAT分析由於代碼原因造成的內存泄漏:

        -----獲取內存快照(.hprof文件):

            方法1:在tomcat/bin/catalina.sh中設置,以便jvm崩潰的時候會打印出堆信息:

                          -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=path_address

            方法2:使用命令jps、jmap獲取內存快照

         jps -m -l   列出JVM中運行的進程狀態信息(獲取某個進程的pid, 供後續命令使用)                     

                         jmap -dump:format=b,file=xxx.hprof pid    把進程內存使用情況dump到文件中

                         jmap -dump:live,format=b,file=xxx.hprof pid   統計存活的對象信息

      方法3:使用jconsole、jvisualVM也能獲取

        -----使用MAT工具分析:

                新建一個文件夾(因爲分析的時候會產生很多臨時文件),把要分析的.hprof文件放進來

                打開MAT,選擇要分析的.hprof文件

                分析的時候,根據MAT給出的提示一步步進行即可

image.png

image.png

image.png

image.png

image.png

注意事項:

  1. 因爲內存快照是某一瞬間的,所以可能需要多捕獲幾次,多次分析,才能發現問題

  2. 分析以後會生成一個壓縮包,如果看不懂的話,可以直接給開發人員進行分析

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章