MAT工具中Shallow heap和Retained heap是如何計(jì)算的

Eclipse MAT 是一個(gè)功能強(qiáng)大的內(nèi)存分析工具 但是我們?cè)谟盟膁ominator_tree的功能時(shí)候發(fā)現(xiàn)了Shallow Heap和Retained Heap這兩列光有數(shù)字卻沒有單位 經(jīng)過一番查找后發(fā)現(xiàn)是 默認(rèn)是以Byte來(lái)計(jì)算的 這也太不方便了


WX20201028-194543@2x.png

如果想可視化更好一些可以這么配置


size_units_cfg.png

修改之后在看就是


size_units_sample.png

Shallow Heap和Retained Heap 是如何計(jì)算的呢

Shallow-heap-1.png

從圖中看出
Object A 持有 Object B 和 Object C
Object B 持有 Object D 和 Object E
Object C 持有 Object F 和 Object G
假設(shè)每個(gè)對(duì)象占用 10 byte

Shallow Heap Size

Shallow Heap Size 的計(jì)算比較簡(jiǎn)單 就是每個(gè)對(duì)象在內(nèi)存中的大小
Object A 的Shallow Heap Size 就是10 byte
Object B 的 Shallow Heap Size 也是 10 byte

Retained Heap Size

現(xiàn)在我們來(lái)計(jì)算Object B 的 Retained Heap Size 的大小
我們發(fā)現(xiàn)Object B 持有 Object D 和 Object E 并且Object D 和 Object E只被Object B 持有 如果發(fā)生內(nèi)存回收Object B被回收的同時(shí) Object D 和 Object E 也會(huì)被回收
那么Object B 的Retained Heap Size 大小為
= Object B (shallow heap size) + Object D (shallow heap size) + Object E (shallow heap size)
= 10 bytes + 10 bytes + 10 bytes
= 30 bytes
再來(lái)看一種情況


Shallow-heap-3-1.png

在這種情況下, Object A的retained heap size 的大小是 40 bytes. Surprising? Puzzling?
如果 Object A 被垃圾回收 那么只有 Object C , Object F 和 Object G會(huì)被回收 而Object B Object D 和Object E會(huì)繼續(xù)存在內(nèi)存中 因?yàn)樗麄儽籓bject H持有
因此, Object A 的retained heap size 計(jì)算方法是:
= Object A (shallow heap size) + Object C (shallow heap size) + Object F (shallow heap size) +Object G (shallow heap size)
= 10 bytes + 10 bytes + 10 bytes + 10 bytes
= 40 bytes.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市晰骑,隨后出現(xiàn)的幾起案子暂吉,更是在濱河造成了極大的恐慌们衙,老刑警劉巖彭则,帶你破解...
    沈念sama閱讀 211,123評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件棱烂,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡喇伯,警方通過查閱死者的電腦和手機(jī)喊儡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)艘刚,“玉大人管宵,你說我怎么就攤上這事∨噬酰” “怎么了?”我有些...
    開封第一講書人閱讀 156,723評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵岗喉,是天一觀的道長(zhǎng)秋度。 經(jīng)常有香客問我,道長(zhǎng)钱床,這世上最難降的妖魔是什么荚斯? 我笑而不...
    開封第一講書人閱讀 56,357評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮查牌,結(jié)果婚禮上事期,老公的妹妹穿的比我還像新娘。我一直安慰自己纸颜,他們只是感情好兽泣,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評(píng)論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著胁孙,像睡著了一般唠倦。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上涮较,一...
    開封第一講書人閱讀 49,760評(píng)論 1 289
  • 那天稠鼻,我揣著相機(jī)與錄音,去河邊找鬼狂票。 笑死候齿,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的闺属。 我是一名探鬼主播慌盯,決...
    沈念sama閱讀 38,904評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼屋剑!你這毒婦竟也來(lái)了润匙?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,672評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤唉匾,失蹤者是張志新(化名)和其女友劉穎孕讳,沒想到半個(gè)月后匠楚,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,118評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡厂财,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評(píng)論 2 325
  • 正文 我和宋清朗相戀三年芋簿,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片璃饱。...
    茶點(diǎn)故事閱讀 38,599評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡与斤,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出荚恶,到底是詐尸還是另有隱情撩穿,我是刑警寧澤,帶...
    沈念sama閱讀 34,264評(píng)論 4 328
  • 正文 年R本政府宣布谒撼,位于F島的核電站食寡,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏廓潜。R本人自食惡果不足惜抵皱,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望辩蛋。 院中可真熱鬧呻畸,春花似錦、人聲如沸悼院。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)樱蛤。三九已至钮呀,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間昨凡,已是汗流浹背爽醋。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留便脊,地道東北人蚂四。 一個(gè)月前我還...
    沈念sama閱讀 46,286評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像哪痰,于是被迫代替她去往敵國(guó)和親遂赠。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評(píng)論 2 348