成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

JVM診斷工具中的深堆、淺堆、支配樹(shù),你都明白嗎

開(kāi)發(fā) 前端
大家在用jvm診斷工具,比如Eclipse MAT或者 Jprofiler分析堆內(nèi)存的時(shí)候,都會(huì)看到一些概念或者關(guān)鍵詞,如Shallow Heap, Retained Heap, Dominator Tree等,你們知道他們是干嘛的嗎?

概述

大家在用jvm診斷工具,比如Eclipse MAT或者 Jprofiler分析堆內(nèi)存的時(shí)候,都會(huì)看到一些概念或者關(guān)鍵詞,如Shallow Heap, Retained Heap, Dominator Tree等,你們知道他們是干嘛的嗎?

Eclipse MAT相關(guān)截圖:

圖片

圖片

jprofile相關(guān)截圖:

圖片

圖片

雖然上面兩個(gè)工具有點(diǎn)差異,但是他們表達(dá)的都是同一個(gè)意思。

淺堆(Shallow Heap、Shallow Size)

淺堆是指一個(gè)對(duì)象所消耗的內(nèi)存。在32位系統(tǒng)中,一個(gè)對(duì)象引用會(huì)占據(jù)4個(gè)字節(jié),一個(gè)int類型會(huì)占據(jù)4個(gè)字節(jié),long型變量會(huì)占據(jù)8個(gè)字節(jié),每個(gè)對(duì)象頭需要占用8個(gè)字節(jié)。根據(jù)堆快照格式不同,對(duì)象的大小可能會(huì)同8字節(jié)進(jìn)行對(duì)齊。

以jdk7中String為例:2個(gè)int值共占8字節(jié),對(duì)象引用占用4字節(jié),對(duì)象頭8字節(jié),合計(jì)20字節(jié),向8字節(jié)對(duì)齊,故占24字節(jié)。

int

hash32

0

int

hash

0

ref

value

alvinalvinalvina

這24字節(jié)為String對(duì)象的淺堆大小。它與String的value實(shí)際取值無(wú)關(guān),無(wú)論字符串長(zhǎng)度如何,淺堆大小始終是24字節(jié)。

深堆(Retained Heap、Retained Size)

這里引入一個(gè)保留集(Retained Set)的概念,什么是保留集呢? 當(dāng)對(duì)象A被垃圾回收后,可以被釋放的所有的對(duì)象集合(包括對(duì)象A本身),即對(duì)象A的保留集可以被認(rèn)為是只能通過(guò)對(duì)象A被直接或間接訪問(wèn)到的所有對(duì)象的集合。通俗地說(shuō),就是指僅被對(duì)象A所持有的對(duì)象的集合。

深堆是指對(duì)象的保留集中所有的對(duì)象的淺堆大小之和,也就是從堆中移除這個(gè)實(shí)例將釋放的內(nèi)存量。

注意: 淺堆指對(duì)象本身占用的內(nèi)存,不包括其內(nèi)部引用對(duì)象的大小。一個(gè)對(duì)象的深堆指只能通過(guò)該對(duì)象訪問(wèn)到的(直接或間接)所有對(duì)象的淺堆之和,即對(duì)象被回收后,可以釋放的真實(shí)空間。

圖片

舉個(gè)例子:對(duì)象A引用了C和D,對(duì)象B引用了C和E。對(duì)象A的淺堆大小只是A本身,A的深堆大小為A與D之和,因?yàn)閷?duì)象C還可以被對(duì)象B訪問(wèn),所以不在對(duì)象A的深堆范圍之內(nèi)。那A的實(shí)際大小是多大呢?在日常開(kāi)發(fā)中,A對(duì)象的實(shí)際大小是A,C,D相加的大小。 所以說(shuō),淺堆、深堆、實(shí)際大小都是不一樣的。

支配樹(shù)(Dominator Tree)

支配樹(shù)可以用來(lái)顯示堆轉(zhuǎn)儲(chǔ)中最大的對(duì)象。樹(shù)的下一層列出了如果刪除對(duì)父節(jié)點(diǎn)的所有傳入引用將被垃圾回收的對(duì)象。

支配樹(shù)是一個(gè)強(qiáng)大的工具,用于研究哪些對(duì)象保持哪些對(duì)象存活。同樣,可以根據(jù)類裝入器(例如組件)和包對(duì)樹(shù)進(jìn)行分組,以簡(jiǎn)化分析。

那究竟什么是支配樹(shù)呢?

在對(duì)象引用圖中,所有指向?qū)ο驜的路徑都經(jīng)過(guò)對(duì)象A,則認(rèn)為對(duì)象A支配對(duì)象B。如果對(duì)象A是離對(duì)象B最近的一個(gè)支配對(duì)象,則認(rèn)為對(duì)象A為對(duì)象B的直接支配者。支配樹(shù)是基于對(duì)象間的引用圖所建立的。

舉個(gè)例子:

圖片

左圖表示對(duì)象引用圖,右圖表示左圖所對(duì)應(yīng)的支配樹(shù)。

  • 對(duì)象A和B由根對(duì)象直接支配,由于在到對(duì)象C的路徑中,可以經(jīng)過(guò)A,也可以經(jīng)過(guò)B,因此對(duì)象C的直接支配者也是根對(duì)象。
  • 對(duì)象F與對(duì)象D相互引用,因?yàn)榈綄?duì)象F的所有路徑必然經(jīng)過(guò)對(duì)象D,因此,對(duì)象D是對(duì)象F的直接支配者。
  • 而到對(duì)象D的所有路徑中,必然經(jīng)過(guò)對(duì)象C,即使是從對(duì)象F到對(duì)象D的引用,從根節(jié)點(diǎn)出發(fā),也是經(jīng)過(guò)對(duì)象C的,所以,對(duì)象D的直接支配者為對(duì)象C。
  • 同理,對(duì)象E支配對(duì)象G。到達(dá)對(duì)象H的可以通過(guò)對(duì)象D,也可以通過(guò)對(duì)象E,因此對(duì)象D和E都不能支配對(duì)象H。
  • 經(jīng)過(guò)對(duì)象C既可以到達(dá)D也可以到達(dá)E,因此對(duì)象C為對(duì)象H的直接支配者。

總結(jié)

本文總結(jié)了jvm診斷工具比如jprofiler、eclipse mat等一些共通的概念,希望對(duì)大家有幫助。

責(zé)任編輯:武曉燕 來(lái)源: JAVA旭陽(yáng)
相關(guān)推薦

2020-07-13 09:16:04

Java集合

2022-06-04 07:46:41

HeapJVM

2010-09-27 08:38:49

JVM堆JVM棧

2023-07-31 07:48:43

Java內(nèi)存虛擬機(jī)

2023-05-07 08:04:36

Java程序回收算法

2023-05-10 11:16:01

Java虛擬機(jī)對(duì)象

2022-01-16 18:55:33

MySQL事務(wù)數(shù)據(jù)庫(kù)

2022-07-03 20:31:59

JVMJava虛擬機(jī)

2019-02-26 14:33:22

JVM內(nèi)存虛擬機(jī)

2022-10-08 08:09:13

MGRGreatSQL事務(wù)

2020-03-06 16:08:46

堆結(jié)構(gòu)堆排序應(yīng)用

2020-03-10 08:01:05

Java堆內(nèi)存線程共享

2021-07-28 20:12:17

WindowsHeap內(nèi)存

2021-07-16 12:33:24

Javascript深拷貝淺拷貝

2017-01-11 14:02:32

JVM源碼內(nèi)存

2015-08-06 14:54:50

JavaScript分析工具OneHeap

2023-10-14 17:49:25

Java存儲(chǔ)

2009-06-08 22:01:03

Java堆Java棧區(qū)別

2009-05-19 17:28:44

深拷貝淺拷貝clone()

2011-07-22 16:50:05

JAVA
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 亚洲欧美激情四射 | 久久久国产一区二区三区四区小说 | аⅴ资源新版在线天堂 | 成人在线精品视频 | 亚洲一区二区三区视频 | 国产一区二区免费 | 一区视频在线免费观看 | 午夜性视频 | 中国免费黄色片 | 亚洲一区二区三区免费视频 | 青娱乐自拍| 欧美久久久久 | 欧美在线亚洲 | 国产精品一区二区三区在线 | 91资源在线观看 | 干出白浆视频 | 欧美va大片 | 亚洲精彩视频在线观看 | 日韩成人精品视频 | 久草久草久草 | 小h片免费观看久久久久 | 亚洲精品日韩欧美 | www精品美女久久久tv | 成人18亚洲xxoo | 欧美一区二区 | 成人在线视频网 | 一区二区三区国产精品 | 美女爽到呻吟久久久久 | 日韩视频免费在线 | 国产一区中文字幕 | 日韩在线观看中文字幕 | 在线免费观看毛片 | 怡红院成人在线视频 | 亚洲一区二区三区在线播放 | av手机在线播放 | 亚洲第一av| 91porn成人精品 | 久久亚洲美女 | 国产一区二区观看 | 亚洲一区二区三区四区五区午夜 | 亚洲欧美自拍偷拍视频 |