Java中怎么計(jì)算對象占用空間-創(chuàng)新互聯(lián)

這篇文章給大家介紹Java中怎么計(jì)算對象占用空間,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

成都創(chuàng)新互聯(lián)從2013年創(chuàng)立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元翁源做網(wǎng)站,已為上家服務(wù),為翁源各地企業(yè)和個人服務(wù),聯(lián)系電話:13518219792

對象頭

對象的頭部至少有兩個WORD,如果是數(shù)組的話,那么三個WORD,內(nèi)容如下:

對象的HashCode,鎖信息等到對象類型數(shù)據(jù)的指針數(shù)組的長度(如果是數(shù)組的話)

規(guī)則

首先,任何對象都是8字節(jié)對齊,屬性按照[long,double]、[int,float]、[char,short]、[byte,boolean]、reference的順序存放,舉個例子:

publicclassTest{

bytea;

intb;

booleanc;

longd;

Objecte;

}

如果這個對象的屬性按照順序存放的話,要占用的空間為:head(8)+a(1)+padding(3)+b(4)+c(1)+padding(7)+d(8)+e(4)+padding(4)=40。但是按照這個規(guī)則得到:head(8)+d(8)+b(4)+a(1)+c(1)+padding(2)+e(4)+padding(4)=32。可以看到節(jié)省了不少空間。

在涉及繼承關(guān)系的時候有一個最基本的規(guī)則:首先存放父類中的成員,接著才是子類中的成員,舉個例子:

classA{

longa;

intb;

intc;

}

classBextendsA{

longd;

}

這樣存放的順序及占用空間如下:head(8)+a(8)+b(4)+c(4)+d(8)=32。那如果父類中的屬性不夠八個字節(jié)怎么辦?這樣就有了新的一條規(guī)則:父類中最后一個成員與子類的第一個成員的間隔如果不夠4個字節(jié),此時需要擴(kuò)展到4個字節(jié)的基本單位,舉個例子:

classA{

bytea;

}

classBextendsA{

byteb;

}

那么此時占用的空間如下:head(8)+a(1)+padding(3)+b(1)+padding(3)=16。顯然這種方式比較浪費(fèi)空間,那么就有了:如果子類的第一個成員是double或者long,并且父類并沒有用完8個字節(jié),JVM會破壞規(guī)將較小的數(shù)據(jù)填充到該空間,舉個例子:

classA{

bytea;

}

classBextendsA{

longb;

shortc;

byted;

}

此時占用的空間如下:head(8)+a(1)+padding(3)+c(2)+d(1)+padding(1)+b(8)=24。

關(guān)于Java中怎么計(jì)算對象占用空間就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

分享題目:Java中怎么計(jì)算對象占用空間-創(chuàng)新互聯(lián)
URL地址:http://muchs.cn/article28/cdcgcp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈、自適應(yīng)網(wǎng)站、微信小程序網(wǎng)頁設(shè)計(jì)公司、網(wǎng)站改版、網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)