JAVA Shallow heap & Retained heap,javashallowheap

來源:互聯網
上載者:User

JAVA Shallow heap & Retained heap,javashallowheap

最近在研究記憶體流失的問題,在使用MAT工具中發現了Shallow heap & Retained heap,不懂。

然後在網上找了一些資料。

 

Shallow Size 
對象自身佔用的記憶體大小,不包括它引用的對象。 
針對非數群組類型的對象,它的大小就是對象與它所有的成員變數大小的總和。當然這裡面還會包括一些java語言特性的資料存放區單元。 
針對數群組類型的對象,它的大小是數組元素對象的大小總和。 

Retained Size 
Retained Size=當前對象大小+當前對象可直接或間接引用到的對象的大小總和。(間接引用的含義:A->B->C, C就是間接引用) 
換句話說,Retained Size就是當前對象被GC後,從Heap上總共能釋放掉的記憶體。 
不過,釋放的時候還要排除被GC Roots直接或間接引用的對象。他們暫時不會被被當做Garbage。 

看圖理解Retained Size 

 

中,GC Roots直接引用了A和B兩個對象。 

A對象的Retained Size=A對象的Shallow Size 
B對象的Retained Size=B對象的Shallow Size + C對象的Shallow Size 

這裡不包括D對象,因為D對象被GC Roots直接引用。 
如果GC Roots不引用D對象呢? 

 


此時, 
B對象的Retained Size=B對象的Shallow Size + C對象的Shallow Size + D對象的Shallow Size

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.