日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

java各種類型對象占用內存情況分析

瀏覽:91日期:2022-08-14 08:24:03
前言

其實一般的程序猿根本不用了解這么深,只有當你到了一定層次,需要了解jvm內部運行機制,或者高并發多線程下,你寫的代碼對內存有影響,你想做性能優化。等等等等,一句話,當你想深入了解java對象在內存中,如何存儲,或者每個對象占用多大空間時,你會感謝這篇文章

本文主要分析jvm中的情況,實驗環境為64位window10系統、JDK1.8,使用JProfiler進行結論驗證

很多描述以及 概念是基于你懂基本java知識的,如果你看起來有點吃力,要加油咯

本片更偏重驗證,更多理論,請參考:https://segmentfault.com/a/1190000006933272

內存公式:Java對象的內存布 = 對象頭(Header) + 實例數據(Instance Data) + 補齊填充(Padding)。

補齊填充:Java對象占用空間是8字節對齊的,即所有Java對象占用bytes數必須是8的倍數

Shallow Size

對象自身占用的內存大小,不包括它引用的對象。針對非數組類型的對象,它的大小就是對象與它所有的成員變量大小的總和。當然這里面還會包括一些java語言特性的數據存儲單元。針對數組類型的對象,它的大小是數組元素對象的大小總和。

Retained Size

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

基本數據類型占用類型 占用空間 boolean、byte 1byte short、char 2byte int、float 4byte long、double 8byte

接下來用JProfiler驗證:

1.新建一個空對象,觀察空對象內存占用

public class TestObject {}

對象占用內存 16b,如圖

java各種類型對象占用內存情況分析

結論:一般自建空對象占用內存 16b,16 = 12(Header) + 4(Padding)

2.在TestObj中新增一個 int 屬性,觀察對象內存占用

public class TestObj { private int i;}

對象占用內存 16b,如圖

java各種類型對象占用內存情況分析

結論:int 占用 4b, 16 = 12(Header) + 4(int)

3.在TestObj中新增一個 long 屬性,觀察對象內存占用

public class TestObj { private long i;}

對象占用內存 24b,如圖

java各種類型對象占用內存情況分析

結論:long 占用 8b, 24 = 12(Header) + 8(long) + 4(Padding)

其余基本類型可以參照以上自行驗證,原理一樣

包裝類型占用

包裝類(Boolean/Byte/Short/Character/Integer/Long/Double/Float)占用內存的大小 = 對象頭大小 + 底層基礎數據類型的大小

包裝類和其他引用類一樣,會產生一個引用(reference)

類型 占用空間 Boolean、Byte 16byte Short、Char 16byte Integer、Float 16byte Long、Double 24byte

1.在TestObj中新增一個 Integer 屬性,觀察對象內存占用

public class TestObj { private Integer i =128;}

對象占用內存 32b,如圖

java各種類型對象占用內存情況分析

結論:Integer 占用 16b, 32 = 12 (Header) + 16(Integer) + 4(reference)

特別的:-128~127 在常量池,只占用 4b,且不產生引用(reference)

2.在TestObj中新增一個 Long 屬性,觀察對象內存占用

public class TestObj { private Long l = new Long(1);}

對象占用內存 40b,如圖

java各種類型對象占用內存情況分析

結論:Long 占用 24b, 40 = 12 (Header) + 24(Long) + 4(reference)

其余包裝類型可以參照以上自行驗證,原理一樣

基本類型數組占用

64位機器上,數組對象的對象頭占用24 bytes,啟用壓縮后占用16字節。比普通對象占用內存多是因為需要額外的空間存儲數組的長度(普通16b-12b)。

對象數組本身的大小=數組對象頭 + length * 存放單個元素大小

在TestObj中新增一個 char[] 屬性,觀察對象內存占用

public class TestObj { private char[] c = {’a’,’b’,’c’};}

char[] c占用內存 40b,如圖

java各種類型對象占用內存情況分析

結論:char[3] 占用 24b, 24 = 40 - 16,24 = 16(Header) + 3 * 2(char) + 2(Padding)

封裝類型數組占用

封裝類型數組比基本類型的數組,需要多管理元素的引用

對象數組本身的大小=數組對象頭+length * 引用指針大小 + length * 存放單個元素大小

在TestObj中新增一個 Integer[] 屬性,觀察對象內存占用

public class TestObj { private Integer[] i = {128,129,130};}

Integer[] i占用內存 80b,如圖

java各種類型對象占用內存情況分析

結論:Integer[3] 占用 80b, 80 = 96 - 16, 80 = 16(Header) + 3 * 4 (reference)+ 3 * 16(Integer) +4(padding)

String占用內存

在TestObj中新增一個空 String 屬性,觀察對象內存占用

public class TestObj { private String s = new String('');}

對象占用內存 40b,如圖

java各種類型對象占用內存情況分析

結論:String 本身占用 24b, 24 = 40 -16也就是說空''也需要16b

注意:這里為什么要寫String s = new String('')?請自己思考,不寫會怎么樣?

答:如果寫成String s = “”,是不會再堆中開辟內存的,也就看不到String占用的空間,你看到的將會是下面的,至于為什么,都是因為final

java各種類型對象占用內存情況分析

以上就是java各種類型對象占用內存情況分析的詳細內容,更多關于java對象占用內存分析的資料請關注好吧啦網其它相關文章!

標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
久久久水蜜桃av免费网站| 欧美日一区二区在线观看| 91日韩欧美| 老鸭窝亚洲一区二区三区| 日韩国产欧美在线播放| 色网在线免费观看| 久久人人精品| 亚洲综合福利| 9久re热视频在线精品| 久久国产尿小便嘘嘘| 亚洲激情中文| 久久99蜜桃| 精品视频一二| 欧美精品97| 欧美日韩91| 精品一区二区三区中文字幕| 久久wwww| 影音国产精品| 欧美一级精品| 国产九九精品| 美女久久99| 欧美日韩亚洲一区| 国产成人精品三级高清久久91| 欧美成人午夜| 美女久久精品| 在线精品福利| 国产精品成人自拍| 日韩在线精品| 性一交一乱一区二区洋洋av| 午夜日韩在线| 日韩美女一区二区三区在线观看| 日韩88av| 亚洲最新av| 亚洲免费福利| 久久精品国产大片免费观看| 亚洲综合电影一区二区三区| 日本不卡免费高清视频在线| 国产一区二区三区亚洲| 成人在线黄色| 视频一区中文| 日韩 欧美一区二区三区| 欧美视频久久| 国产精品久久久久蜜臀| 久久精品123| 麻豆视频在线看| 9999国产精品| 日韩精品三区四区| 蜜桃免费网站一区二区三区| 精品精品国产三级a∨在线| 热三久草你在线| 国产精品日韩久久久| 成人精品国产亚洲| 久久激情五月激情| 最新国产精品| 亚洲综合不卡| 不卡av一区二区| av一区在线| 欧美一级鲁丝片| 嫩草伊人久久精品少妇av杨幂| 免费日本视频一区| 蜜桃av在线播放| 日韩三区四区| 日产精品一区| 精品国产亚洲一区二区三区在线 | 国产亚洲电影| 亚洲精选91| 伊人成人在线视频| 国产在线|日韩| 成人久久一区| 日韩理论片av| 波多视频一区| 国产在线视频欧美一区| 久久香蕉精品香蕉| 久久国内精品| 麻豆9191精品国产| 国产精品99久久精品| 蜜桃久久久久久| 久久久久久久久丰满| 麻豆国产欧美日韩综合精品二区| 欧美在线91| 蜜桃视频在线观看一区二区| 日韩欧美1区| 91亚洲一区| 日韩中文在线电影| 久久国产精品成人免费观看的软件| 黄色aa久久| 日韩精品免费一区二区在线观看| 天堂8中文在线最新版在线| 精品精品国产三级a∨在线| 91精品福利观看| 国产精品亚洲一区二区在线观看| 日韩av不卡一区二区| 亚洲精品乱码| 视频一区在线播放| 亚洲欧美成人综合| 91精品电影| 婷婷久久一区| 黄色亚洲大片免费在线观看| 中文一区一区三区免费在线观 | 亚洲午夜国产成人| 91精品国产经典在线观看| 青青草国产精品亚洲专区无| 91精品国产自产观看在线 | 日本久久一区| 久久精品国产99国产精品| 日韩精品第一区| 国产亚洲综合精品| 欧美在线看片| 亚洲啊v在线| 黄色欧美日韩| 日韩avvvv在线播放| 成人日韩av| 亚洲欧美日韩国产| 欧美激情91| 亚洲电影在线| 亚洲人成高清| 国产精品毛片久久久| 97精品国产福利一区二区三区| 美女网站一区| 欧美永久精品| 私拍精品福利视频在线一区| 亚洲欧洲一区| 久久不见久久见国语| 久久久久久免费视频| 日韩有吗在线观看| 日韩欧美1区| 日韩高清在线不卡| 久久婷婷一区| 婷婷视频一区二区三区| 午夜久久中文| 日本aⅴ免费视频一区二区三区| 毛片在线网站| 日本va欧美va欧美va精品| 日韩一区亚洲二区| 日本v片在线高清不卡在线观看| 成人在线视频免费| 亚洲三区欧美一区国产二区| а√在线中文在线新版| 日韩一区二区三免费高清在线观看| 精品一区二区三区四区五区| 蘑菇福利视频一区播放| 色综合五月天| 欧美在线91| 精品1区2区3区4区| 精品国产乱码久久久久久樱花| 热久久免费视频| 黄色网一区二区| 日韩欧美中文字幕一区二区三区| 日韩欧美网址| 国产另类在线| 亚洲狼人精品一区二区三区| 日韩大片在线播放| 国产色噜噜噜91在线精品| 不卡在线一区| 欧美韩日一区| 国产麻豆精品久久| 亚洲人成网77777色在线播放| 日韩在线短视频| 国产精品久久久网站| 免费看欧美美女黄的网站| 亚洲综合电影| 你懂的国产精品永久在线| 亚洲欧美专区| 亚洲一区二区三区高清| 日韩免费福利视频| 国内精品伊人| 国产精品一区二区av日韩在线| 爽爽淫人综合网网站| 亚洲v在线看| а√天堂8资源在线| 欧美成人精品一级| 日韩av影院| 蜜桃传媒麻豆第一区在线观看| 欧美不卡视频| 99久久亚洲精品蜜臀| 亚洲精品永久免费视频| 久久精品国产99国产精品| 国产日韩欧美一区二区三区| 综合激情在线| 亚洲资源在线| 蜜桃一区二区三区在线观看| 欧美福利一区| 久久一级电影| 99精品综合| 日韩国产网站| 日本不卡免费高清视频在线| 激情中国色综合| 黄色网一区二区| 精品亚洲免a| 欧美国产极品| 精品中文字幕一区二区三区四区| 国产精品白丝久久av网站| 国产精品久久久久久妇女| 欧美精品影院| 日韩av网站免费在线| 日韩久久一区| 青青国产精品| 麻豆精品视频在线观看免费| 国产精品久久久久久久久久久久久久久 | 国产欧美一级|