MAT:Memory Analyzer Tool
創(chuàng)新互聯(lián)公司專注于企業(yè)成都全網(wǎng)營銷、網(wǎng)站重做改版、天河網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、HTML5建站、商城網(wǎng)站開發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)營銷網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為天河等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。是一個快速并且功能強(qiáng)大的 java heap 分析器,能分析查找內(nèi)存泄漏等問題
?獲取內(nèi)存快照存儲的dump文件,就可以利用它來分析
?下載地址:http://www.eclipse.org/mat/downloads.php
基本概念:
Shallow Size:對象自身占用的內(nèi)存大小
Retained Size:當(dāng)前對象大小+它直接/間接引用到的對象大小,兩者之和
通過MAT分析由于代碼原因造成的內(nèi)存泄漏:
-----獲取內(nèi)存快照(.hprof文件):
?方法1:在tomcat/bin/catalina.sh中設(shè)置,以便jvm崩潰的時候會打印出堆信息:
???????????????-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=path_address
? 方法2:使用命令jps、jmap獲取內(nèi)存快照
jps -m -l? ?列出JVM中運行的進(jìn)程狀態(tài)信息(獲取某個進(jìn)程的pid, 供后續(xù)命令使用)?????????????????????
?????????? ? ?jmap -dump:format=b,file=xxx.hprof pid? ? 把進(jìn)程內(nèi)存使用情況dump到文件中
?方法3:利用jvisualVM
-----使用MAT工具分析:
?????新建一個文件夾(因為分析的時候會產(chǎn)生很多臨時文件),把要分析的.hprof文件放進(jìn)來
?????打開MAT,選擇要分析的.hprof文件
?????分析的時候,根據(jù)MAT給出的提示一步步進(jìn)行即可
注意事項:
因為內(nèi)存快照是某一瞬間的,所以可能需要多捕獲幾次,多次分析,才能發(fā)現(xiàn)問題
分析以后會生成一個壓縮包,如果看不懂的話,可以直接給開發(fā)人員進(jìn)行分析