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

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

java各種類型對(duì)象占用內(nèi)存情況分析

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

其實(shí)一般的程序猿根本不用了解這么深,只有當(dāng)你到了一定層次,需要了解jvm內(nèi)部運(yùn)行機(jī)制,或者高并發(fā)多線程下,你寫的代碼對(duì)內(nèi)存有影響,你想做性能優(yōu)化。等等等等,一句話,當(dāng)你想深入了解java對(duì)象在內(nèi)存中,如何存儲(chǔ),或者每個(gè)對(duì)象占用多大空間時(shí),你會(huì)感謝這篇文章

本文主要分析jvm中的情況,實(shí)驗(yàn)環(huán)境為64位window10系統(tǒng)、JDK1.8,使用JProfiler進(jìn)行結(jié)論驗(yàn)證

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

本片更偏重驗(yàn)證,更多理論,請(qǐng)參考:https://segmentfault.com/a/1190000006933272

內(nèi)存公式:Java對(duì)象的內(nèi)存布 = 對(duì)象頭(Header) + 實(shí)例數(shù)據(jù)(Instance Data) + 補(bǔ)齊填充(Padding)。

補(bǔ)齊填充:Java對(duì)象占用空間是8字節(jié)對(duì)齊的,即所有Java對(duì)象占用bytes數(shù)必須是8的倍數(shù)

Shallow Size

對(duì)象自身占用的內(nèi)存大小,不包括它引用的對(duì)象。針對(duì)非數(shù)組類型的對(duì)象,它的大小就是對(duì)象與它所有的成員變量大小的總和。當(dāng)然這里面還會(huì)包括一些java語言特性的數(shù)據(jù)存儲(chǔ)單元。針對(duì)數(shù)組類型的對(duì)象,它的大小是數(shù)組元素對(duì)象的大小總和。

Retained Size

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

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

接下來用JProfiler驗(yàn)證:

1.新建一個(gè)空對(duì)象,觀察空對(duì)象內(nèi)存占用

public class TestObject {}

對(duì)象占用內(nèi)存 16b,如圖

java各種類型對(duì)象占用內(nèi)存情況分析

結(jié)論:一般自建空對(duì)象占用內(nèi)存 16b,16 = 12(Header) + 4(Padding)

2.在TestObj中新增一個(gè) int 屬性,觀察對(duì)象內(nèi)存占用

public class TestObj { private int i;}

對(duì)象占用內(nèi)存 16b,如圖

java各種類型對(duì)象占用內(nèi)存情況分析

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

3.在TestObj中新增一個(gè) long 屬性,觀察對(duì)象內(nèi)存占用

public class TestObj { private long i;}

對(duì)象占用內(nèi)存 24b,如圖

java各種類型對(duì)象占用內(nèi)存情況分析

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

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

包裝類型占用

包裝類(Boolean/Byte/Short/Character/Integer/Long/Double/Float)占用內(nèi)存的大小 = 對(duì)象頭大小 + 底層基礎(chǔ)數(shù)據(jù)類型的大小

包裝類和其他引用類一樣,會(huì)產(chǎn)生一個(gè)引用(reference)

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

1.在TestObj中新增一個(gè) Integer 屬性,觀察對(duì)象內(nèi)存占用

public class TestObj { private Integer i =128;}

對(duì)象占用內(nèi)存 32b,如圖

java各種類型對(duì)象占用內(nèi)存情況分析

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

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

2.在TestObj中新增一個(gè) Long 屬性,觀察對(duì)象內(nèi)存占用

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

對(duì)象占用內(nèi)存 40b,如圖

java各種類型對(duì)象占用內(nèi)存情況分析

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

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

基本類型數(shù)組占用

64位機(jī)器上,數(shù)組對(duì)象的對(duì)象頭占用24 bytes,啟用壓縮后占用16字節(jié)。比普通對(duì)象占用內(nèi)存多是因?yàn)樾枰~外的空間存儲(chǔ)數(shù)組的長(zhǎng)度(普通16b-12b)。

對(duì)象數(shù)組本身的大小=數(shù)組對(duì)象頭 + length * 存放單個(gè)元素大小

在TestObj中新增一個(gè) char[] 屬性,觀察對(duì)象內(nèi)存占用

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

char[] c占用內(nèi)存 40b,如圖

java各種類型對(duì)象占用內(nèi)存情況分析

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

封裝類型數(shù)組占用

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

對(duì)象數(shù)組本身的大小=數(shù)組對(duì)象頭+length * 引用指針大小 + length * 存放單個(gè)元素大小

在TestObj中新增一個(gè) Integer[] 屬性,觀察對(duì)象內(nèi)存占用

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

Integer[] i占用內(nèi)存 80b,如圖

java各種類型對(duì)象占用內(nèi)存情況分析

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

String占用內(nèi)存

在TestObj中新增一個(gè)空 String 屬性,觀察對(duì)象內(nèi)存占用

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

對(duì)象占用內(nèi)存 40b,如圖

java各種類型對(duì)象占用內(nèi)存情況分析

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

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

答:如果寫成String s = “”,是不會(huì)再堆中開辟內(nèi)存的,也就看不到String占用的空間,你看到的將會(huì)是下面的,至于為什么,都是因?yàn)閒inal

java各種類型對(duì)象占用內(nèi)存情況分析

以上就是java各種類型對(duì)象占用內(nèi)存情況分析的詳細(xì)內(nèi)容,更多關(guān)于java對(duì)象占用內(nèi)存分析的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Java
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
麻豆mv在线观看| 999视频精品| 蜜臀av性久久久久蜜臀aⅴ流畅| 国产黄大片在线观看| 国产videos久久| 精品久久在线| 国产精品国码视频| 成人va天堂| 日韩在线一二三区| 欧美日一区二区三区在线观看国产免| 久久精品亚洲欧美日韩精品中文字幕| 亚洲一区国产| 国产精品一区高清| 亚洲最新无码中文字幕久久| 野花国产精品入口| 国产亚洲精aa在线看| 日本久久综合| 国产亚洲欧洲| 国产精品一区二区中文字幕| 久草免费在线视频| 九九综合九九| 欧美日韩国产一区二区在线观看| 精品九九久久| 99视频一区| 国产精品对白| 久久美女性网| 日本欧美一区二区| 久久天堂精品| 日韩三级一区| 亚洲播播91| 蜜臀久久久99精品久久久久久| 久久99国产精品视频| 在线日韩电影| 午夜在线精品偷拍| 国产精品亚洲产品| 在线视频观看日韩| 伊人久久成人| 亚洲精品成人一区| 国产欧美视频在线| 精品久久97| 亚洲www免费| 亚洲色图国产| 久久久久美女| 欧美日本三区| 亚洲一区二区毛片| 中文字幕在线视频久| 日本不卡在线视频| 亚洲欧美综合| 精品视频网站| 日韩精品一区二区三区中文字幕| 日韩国产一区二区| 日韩精品国产精品| 欧美成人基地| 国产亚洲久久| 婷婷综合五月| 欧美激情亚洲| 色综合视频一区二区三区日韩 | 久久国产精品99国产| 狠狠久久伊人| 日本大胆欧美人术艺术动态| 日韩欧美自拍| 欧美国产视频| 久久亚洲影院| 岛国av免费在线观看| 日本欧美大码aⅴ在线播放| 精品一区二区三区四区五区| 中文无码日韩欧| 日本亚洲欧美天堂免费| 一区二区精品伦理...| 四虎成人精品一区二区免费网站| 不卡视频在线| 99久久久久| 激情国产在线| 中文字幕人成乱码在线观看| 麻豆91在线播放| 久久av综合| 国产极品模特精品一二| 日本91福利区| 日本亚洲视频在线| 中文日韩在线| 久久精品播放| 成午夜精品一区二区三区软件| 天堂久久av| 性一交一乱一区二区洋洋av| 国产一区二区三区国产精品| 日本精品另类| 国产精品三上| 999国产精品999久久久久久| 久久中文欧美| 国产麻豆一区二区三区精品视频| 老色鬼久久亚洲一区二区| 青青青免费在线视频| 国产精品久久久网站| 国产精品片aa在线观看| 综合在线一区| 一区二区精彩视频| 亚洲18在线| 久久福利一区| 日韩和欧美一区二区三区| 欧美日韩亚洲一区在线观看| 欧美伊人影院| 卡一卡二国产精品| 国产精品蜜芽在线观看| 激情国产在线| 免费毛片在线不卡| 免费人成在线不卡| 欧美在线日韩| 国内精品麻豆美女在线播放视频| 日韩精品2区| 夜夜精品视频| 久久国产生活片100| 国产videos久久| 久久天堂精品| 深夜福利亚洲| 精品精品99| 精品欧美久久| 综合一区在线| 久久99精品久久久久久园产越南| 久久精品一区二区国产| 日韩视频网站在线观看| 香蕉精品999视频一区二区| 久久午夜精品| 91精品国产自产精品男人的天堂| 免费精品一区| 国产精品13p| 亚洲专区在线| 久久精品 人人爱| 日韩中文av| 久久亚洲资源中文字| 久久久久久亚洲精品美女| 麻豆视频在线看| 亚洲国产一区二区在线观看 | 精品一区二区三区在线观看视频| 99tv成人| 日本不卡视频在线观看| 国产精品不卡| 欧美天堂亚洲电影院在线观看| 少妇精品久久久| 在线人成日本视频| 亚洲精品123区| 中文亚洲免费| 国产亚洲欧美日韩在线观看一区二区| 精品亚洲精品| 老司机精品久久| 国产精品igao视频网网址不卡日韩 | 日本一区二区免费高清| 伊人精品在线| 欧美日一区二区在线观看| 国产乱码午夜在线视频| 久久国产精品久久w女人spa| 国产亚洲电影| 99国产精品久久久久久久成人热| 91成人在线网站| 亚洲黑丝一区二区| 国产精品一区二区三区www| 日韩视频在线一区二区三区 | 午夜电影亚洲| 精品亚洲成人| 亚洲区欧美区| 99精品网站| 美女在线视频一区| 日韩在线一二三区| 日韩精品1区| 久久超碰99| 亚洲午夜国产成人| 久久久天天操| 国产a亚洲精品| 国产精品一区二区精品| 免费视频国产一区| 日韩88av| 国产精品xxx| 日韩精品福利一区二区三区| 日韩中文在线播放| 国产精品三p一区二区| 免费视频最近日韩| 午夜国产一区二区| 综合日韩av| 久久尤物视频| 国产美女视频一区二区| 婷婷视频一区二区三区| 午夜在线精品偷拍| 午夜欧美理论片| 亚洲国内精品| 91精品综合| 国产麻豆久久| 另类专区亚洲| 国产粉嫩在线观看| 91亚洲成人| 综合日韩av| 免费看av不卡| 蜜臀国产一区| 老牛国内精品亚洲成av人片| 欧美一级二区| 日本精品国产| 日韩精品视频中文字幕| 亚洲欧洲专区| 日韩中文字幕| 日韩高清一区在线| 日本亚洲视频在线| 日韩二区三区在线观看|