成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

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

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

[[161872]]

對象頭

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

  1. 對象的HashCode,鎖信息等

  2. 到對象類型數據的指針

  3. 數組的長度(如果是數組的話)

規則

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

  1. public class Test { 
  2.     byte a; 
  3.     int b; 
  4.     boolean c; 
  5.     long d; 
  6.     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. class A { 
  2.     long a; 
  3.     int b; 
  4.     int c; 
  5. class B extends A { 
  6.     long d; 

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

  1. class A { 
  2.     byte a; 
  3. class B extends A { 
  4.     byte b; 

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

  1. class A { 
  2.     byte a; 
  3. class B extends A { 
  4.     long b; 
  5.     short c; 
  6.     byte d; 

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

責任編輯:王雪燕 來源: WsztRush
相關推薦

2009-08-18 09:19:12

Windows 7占用空間Windows 7體積

2009-09-07 09:10:24

Windows 7占用空間

2010-06-28 15:48:51

SQL Server

2018-01-11 15:36:23

命令磁盤空間Docker

2015-09-30 14:38:19

系統磁盤空間Windows 10

2024-07-08 10:56:34

Rust進程內存

2025-02-10 00:20:00

2019-02-26 10:00:37

Linux命令內存

2021-01-20 13:50:45

MySQL數據庫代碼

2015-11-25 13:37:52

磁盤空間LinuxUbuntu

2022-01-13 09:58:26

Linux端口命令

2022-02-08 11:31:23

Linux端口命令

2021-08-21 15:11:31

微信內存功能

2011-04-13 09:31:50

Oracle

2013-11-06 15:01:51

Linux命令內存

2021-02-27 10:49:13

可視化分析資源

2019-02-25 08:00:00

Linux內存

2021-07-22 07:20:24

JS 遍歷方法前端

2022-04-01 10:37:45

戴爾

2010-07-12 09:15:54

SQL Server
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲精品欧美 | 免费黄色片在线观看 | 国产福利二区 | 国产精品一区二区av | 色婷婷激情 | 国产精品福利在线观看 | 成人三级影院 | 天天干天天草 | 日韩成人精品 | 特级生活片 | 久久精品中文 | 成人一区二区三区在线观看 | av黄色在线观看 | 午夜av电影 | 国产美女一区 | 精品久久一区二区 | 国产激情三区 | 亚洲一区二区三区高清 | 亚洲精品久久久久久宅男 | 午夜影院网站 | 国产精品视频久久 | 天天看夜夜 | 日韩欧美在线一区 | 成人在线看片 | 羞羞视频在线观看 | 日本黄色影片在线观看 | 亚洲日本国产 | 爱爱小视频 | 亚洲天堂日韩精品 | 九色.com| 超碰人人人 | 欧美精品久久久久久久久久 | 北条麻妃视频在线观看 | 免费久草| 99久久免费观看 | 国产精品一区二区免费看 | 日本一本视频 | 久久亚洲一区 | 久久免费香蕉视频 | 色香蕉在线 | 日本视频中文字幕 |