日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

一个Java对象到底占用多大内存?

發布時間:2025/3/21 java 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一个Java对象到底占用多大内存? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近在調研MAT和VisualVM源碼實現,遇到一個可疑問題,兩者計算出來的對象大小不一致,才有了這樣疑惑。

一個Java對象到底占用多大內存?

為了復現這個問題,準備了4個最簡單類:

class AAAAA {}class BBBBB {int a = 1;}class CCCCC {long a = 1L;}class DDDDD {String s = "hello";}

當然了,再來個主函數:

final List<AAAAA> aaa = new ArrayList<>(100000); final List<BBBBB> bbb = new ArrayList<>(100000); final List<CCCCC> ccc = new ArrayList<>(100000); final List<DDDDD> ddd = new ArrayList<>(100000);for (int i = 0; i < 100000; i++) {aaa.add(new AAAAA());bbb.add(new BBBBB());ccc.add(new CCCCC());ddd.add(new DDDDD());}

本地的執行環境是64位的JDK8,且使用默認的啟動參數,運行之后通過 jmap-dump命令生成dump文件,分別用MAT和VisualVM打開。

MAT

通過MAT打開,可以發現ABD對象大小都是16字節,而C對象大小為24字節

VisualVM

通過Vis打開,可以發現其顯示的大小和MAT有蠻大的差別。

好奇怪,哪個是對的?

要回答這個問題,首先得清楚的知道JVM中對象的內存布局。

在Hotspot中,一個對象包含3個部分:對象頭、實例數據和對齊填充。

對象頭

這里不講對象頭是個什么東西,感興趣的同學可以看我的其它文章。 對象頭的大小一般和系統的位數有關,也和啟動參數 UseCompressedOops有關:

  • 32位系統,占用 8 字節

  • 64位系統,開啟?UseCompressedOops時,占用 12 字節,否則是16字節

實例數據

原生類型的內存占用情況如下:

  • boolean 1

  • byte 1

  • short 2

  • char 2

  • int 4

  • float 4

  • long 8

  • double 8

引用類型的內存占用和系統位數以及啟動參數 UseCompressedOops有關

  • 32位系統占4字節

  • 64位系統,開啟?UseCompressedOops時,占用4字節,否則是8字節

對齊填充

在Hotspot中,為了更加容易的管理內存,一般會使用8字節進行對齊。

意思是每次分配的內存大小一定是8的倍數,如果對象頭+實例數據的值不是8的倍數,那么會重新計算一個較大值,進行分配。

結果

有了對象各部分的內存占用大小,可以很輕松的計算出ABCD各對象在64位系統,且開啟 UseCompressedOops參數時的大小。

  • A對象只包含一個對象頭,大小占12字節,不是8的倍數,需要4字節進行填充,一共占16字節

  • B對象包含一個對象頭和int類型,12+4=16,正好是8的倍數,不需要填充。

  • C對象包含一個對象頭和long類型,12+8=20,不是8的倍數,需要4個字節進行填充,占24字節

  • D對象包含一個對象頭和引用類型,12+4=16,正好是8的倍數,不需要填充。

可以得出,VisualVM的顯示結果有點問題,主要因為以下兩點:

  • 首先,沒有考慮是否開啟?UseCompressedOops

  • 其次,沒有考慮內存對齊填充的情況

感興趣的同學,可以動手實踐一下,這樣可以加深對象內存布局的理解。

經過這段時間對MAT和VisualVM的源碼研究,發現MAT的功能不是強大一點點,建議大家以后盡量使用MAT。

總結

以上是生活随笔為你收集整理的一个Java对象到底占用多大内存?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲国产伊人 | 国产美女视频网站 | www亚洲天堂 | 日韩爱爱网 | 久久久久久久久久久久久久久久久 | 疯狂做爰的爽文多肉小说王爷 | 高h喷水荡肉少妇爽多p视频 | 国产高潮又爽又无遮挡又免费 | 国产精品久久国产精品99 | 香蕉在线影院 | 国产精品久久久久99 | 国产一级免费视频 | 久久久夜精品 | 一级黄色影院 | 国产成人超碰人人澡人人澡 | 极品91 | 欧美日韩高清免费 | 毛片基地在线观看 | 日韩亚洲在线观看 | 国产亚洲成人av | 91性高潮久久久久久久久 | 中文字幕巨乳 | 色狠狠av老熟女 | 精品视频一区二区三区四区五区 | 国产精品自产拍高潮在线观看 | av之家在线 | 天天曰 | 91网站视频在线观看 | 性中文字幕 | 精品日韩av | 国产资源视频 | 中文字幕日韩av | 日本在线播放视频 | 国产精品a级 | 色婷婷色综合 | 日韩欧洲亚洲 | 亚洲第一页视频 | 欧美激情综合色综合啪啪五月 | 亚洲欧美日韩国产一区二区 | 淫岳高潮记小说 | a毛片大片 | av老司机在线播放 | 亚洲国产mv | 男女草逼网站 | 国产一级在线播放 | 国产人妖在线观看 | 免费激情网站 | www.com欧美 | 婷婷色五| 日韩在线免费看 | 天天夜夜人人 | 黄色午夜影院 | 免费在线观看a视频 | 国产精品久久久久久免费 | 亚洲第一视频 | 色男天堂| 相亲对象是问题学生动漫免费观看 | 色福利hd写真video | 亚洲 欧美 国产 另类 | 欧美一区二区三区免费 | 伊人夜夜| 污片网站在线观看 | free性护士vidos猛交 | 日本欧美一区二区三区 | 黄色片在哪里看 | 亚洲h在线观看 | 成人欧美一区二区三区在线观看 | xxav在线 | 久草大| 日本一二三区在线 | 日本69熟| 精品三级在线观看 | www黄色在线观看 | 天天天天干 | 五月婷婷综合久久 | 性欧美极品另类 | 在线高清观看免费观看 | 91人人澡人人爽人人精品 | 四虎在线视频免费观看 | 黄色特级网站 | 天天爱天天爽 | 91成人在线观看喷潮蘑菇 | www.欧美色图 | 色哟哟导航 | 国模人体私拍xvideos | 精品久久久网站 | 性感美女在线观看 | 中文字幕第| 欧美日本中文字幕 | 97激情| 毛片毛片毛片毛片毛片毛片毛片毛片 | 香蕉视频网站在线 | 国产精品三级视频 | 2025国产精品视频 | av大片网址| 男女啪啪免费看 | 国产婷婷在线视频 | 秋霞午夜鲁丝一区二区 | 欧州一级片 |