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

服務器之家:專注于服務器技術及軟件下載分享
分類導航

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

服務器之家 - 編程語言 - JAVA教程 - 如何計算Java對象占用了多少空間?

如何計算Java對象占用了多少空間?

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

在Java中沒有sizeof運算符,所以沒辦法知道一個對象到底占用了多大的空間,但是在分配對象的時候會有一些基本的規則,我們根據這些規則大致能判斷出來對象大小,需要的朋友可以參考下

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

一、對象頭

對象的頭部至少有兩個WORD,如果是數組的話,那么三個WORD,內容如下:

  • 1、對象的HashCode,鎖信息等
  • 2、到對象類型數據的指針
  • 3、數組的長度(如果是數組的話)

二、規則

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

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

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

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

?
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。那如果父類中的屬性不夠八個字節怎么辦?這樣就有了新的一條規則:父類中最后一個成員與子類的第一個成員的間隔如果不夠4個字節,此時需要擴展到4個字節的基本單位,舉個例子:

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

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

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

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

以上就是計算Java對象占用了多少空間的方法,希望對大家學習java程序設計有所幫助。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日韩精选在线 | 国内交换一区二区三区 | 麻豆在线传煤 | 韩国伊人| 欧美国产日韩在线播放 | 欧美日韩免费一区二区在线观看 | 特黄特色一级aa毛片免费观看 | 久久草福利自拍视频在线观看 | 第四色男人天堂 | 成人免费体验区福利云点播 | 国产一区二区三区在线观看视频 | 500第一精品 | 国产永久免费爽视频在线 | 99精品久久精品一区二区 | 久久水蜜桃亚洲AV无码精品偷窥 | 激情偷拍网 | 啊啊啊好大视频 | 国产最新进精品视频 | 91专区 | 亚洲四虎永久在线播放 | 色花堂中文字幕98堂网址 | 久久91精品国产91久 | yjsp妖精视频在线观看免费 | 免费一区在线观看 | 国产一及毛片 | 免费观看a毛片一区二区不卡 | 无码AV精品一区二区三区 | 校花被拖到野外伦小说 | 免费观看a毛片一区二区不卡 | 毛片亚洲毛片亚洲毛片 | 欧美日韩一二三区免费视频观看 | 国产卡一卡二卡3卡乱码免费 | 国产区成人精品视频 | 草莓视频首页 | 99久久香蕉国产综合影院 | 韩国久播影院理论片不卡影院 | 欧美图片小说 | 久久精品动漫99精品动漫 | 欧美日本一道高清二区三区 | 欧美日韩综合网在线观看 | 无码毛片内射白浆视频 |