?##?1.MAT工具的下載和安裝
MAT(Memory Analyzer Tool)工具是eclipse的一個(gè)插件,使用起來非常方便别垮,尤其是在分析 大內(nèi)存的dump文件時(shí)荡澎,可以非常直觀的看到各個(gè)對(duì)象在堆空間中所占用的內(nèi)存大小雏搂、類實(shí)例數(shù)量、對(duì)象引用關(guān)系驼唱、利用OQL對(duì)象查詢藻茂,以及可以很方便的找出對(duì)象GC Roots的相關(guān)信息,當(dāng)然最吸引人的還是能夠快速為開發(fā)人員生成內(nèi)存泄露報(bào)表玫恳,方便定位問題和分析問題辨赐。
MAT工具的下載地址為: http://www.eclipse.org/mat/downloads.php
MAT插件的下載地址為: http://download.eclipse.org/mat/1.3/update-site
######2.下載下來后運(yùn)行:
運(yùn)行報(bào)錯(cuò):
失望不?京办?掀序?經(jīng)過分析是jdk路徑不對(duì)?為啥不對(duì)呢臂港?jdk在mat文件夾下沒有可以配置的地方森枪,那就是走默認(rèn)的jdk配置视搏,結(jié)果沒找到,沒有命中目標(biāo)文件jvm.dll县袱。
那只能是jdk位數(shù)的問題了浑娜,位數(shù)不一樣,安裝后的jdk目錄結(jié)構(gòu)就不一樣式散。
解決方法有兩個(gè):
1.下載和你jdk位數(shù)匹配的mat工具筋遭。
2.更換jdk為64位。
溫馨提示:機(jī)器位數(shù)和jdk位數(shù)不配可能有問題暴拄,報(bào)jvm問題漓滔,http://www.2cto.com/kf/201208/151334.html
后續(xù)使用MAT內(nèi)容持續(xù)更新~
######MAT工具詳解:
? ?Histogram(直方圖)視圖:
? ?dominator_tree(支配樹)視圖:
? ? ? ? 基礎(chǔ)概念:
Shallow Heap 和 Retained Heap
Shallow Heap表示對(duì)象本身占用內(nèi)存的大小,不包含對(duì)其他對(duì)象的引用乖篷,也就是對(duì)象頭加成員變量(不是成員變量的值)的總和响驴。
Retained Heap是該對(duì)象自己的Shallow Heap,并加上從該對(duì)象能直接或間接訪問到對(duì)象的Shallow Heap之和撕蔼。換句話說豁鲤,Retained Heap是該對(duì)象GC之后所能回收到內(nèi)存的總和。
今天分析了一個(gè)堆dump:
以前用jdk自帶的jvisualvm.exe工具:
這個(gè)工具有什么問題呢鲸沮?dump上G了就打不開了琳骡,類似hashmap看不到具體內(nèi)容是哪個(gè)class的東西~