一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專(zhuān)注于服務(wù)器技術(shù)及軟件下載分享
分類(lèi)導(dǎo)航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務(wù)器之家 - 編程語(yǔ)言 - JAVA教程 - 如何計(jì)算Java對(duì)象占用了多少空間?

如何計(jì)算Java對(duì)象占用了多少空間?

2020-03-21 12:27lijiao JAVA教程

在Java中沒(méi)有sizeof運(yùn)算符,所以沒(méi)辦法知道一個(gè)對(duì)象到底占用了多大的空間,但是在分配對(duì)象的時(shí)候會(huì)有一些基本的規(guī)則,我們根據(jù)這些規(guī)則大致能判斷出來(lái)對(duì)象大小,需要的朋友可以參考下

本文介紹了計(jì)算Java對(duì)象占用了多少空間的方法,分享給大家供大家參考,具體內(nèi)容如下

一、對(duì)象頭

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

  • 1、對(duì)象的HashCode,鎖信息等
  • 2、到對(duì)象類(lèi)型數(shù)據(jù)的指針
  • 3、數(shù)組的長(zhǎng)度(如果是數(shù)組的話(huà))

二、規(guī)則

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

?
1
2
3
4
5
6
7
public class Test {
  byte a;
  int b;
  boolean c;
  long d;
  Object e;
}

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

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

?
1
2
3
4
5
6
7
8
class A {
  long a;
  int b;
  int c;
}
class B extends A {
  long d;
}

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

?
1
2
3
4
5
6
class A {
  byte a;
}
class B extends A {
  byte b;
}

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

?
1
2
3
4
5
6
7
8
class A {
  byte a;
}
class B extends A {
  long b;
  short c;
  byte d;
}

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

以上就是計(jì)算Java對(duì)象占用了多少空間的方法,希望對(duì)大家學(xué)習(xí)java程序設(shè)計(jì)有所幫助。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美午夜精品久久久久久黑人 | 荡娃艳妇有声小说 | 操的我好爽 | 亚洲 日韩 国产 制服 在线 | 天堂8在线天堂资源bt | 99精品热视频 | 桃色视频软件 | fc2免费人成为视频 eeuss18影院www国产 | 日本成熟 | 火影小南被爆羞羞网站进入 | pron在线观看 | 99热热99| 国亚洲欧美日韩精品 | 四虎现在的网址入口2022 | 国产精品香蕉夜间视频免费播放 | 91噜噜噜噜色 | 国产一区在线免费观看 | 国产一区二区三区在线看片 | 亚洲一区二区三区久久精品 | 国产高清在线精品一区二区 | 日本无卡码一区二区三区 | 国产老熟 | 三级aa久久| 男人晚上适合偷偷看的污污 | 日韩欧美在线看 | 皇上好大好硬好涨好深好爽 | videodesexo中国妞| 四虎1515hhcom | 亚洲女人国产香蕉久久精品 | 亚洲国产精品日韩高清秒播 | 成人黄色a级片 | 成人免费在线视频网 | 国产成人盗拍精品免费视频 | 大片毛片女女女女女女女 | 香蕉久久高清国产精品免费 | 国产亚洲精品看片在线观看 | 男人的j进入女人的j免费 | 欧美灰丝袜丝交nylons | 波多野结衣中文字幕 | 青草网在线观看 | 德国高清freexxxx性 |