java調優隨記-java對象大小

在java中,基本數據類型的大小是固定。可是java對象的大小是不固定的,須要經過計算。java

在java中,一個空對象(沒有屬性和方法的對象)在堆中佔用8byte,好比 Object obj = new Object();另外棧中存儲引用須要佔用4byte的空間,總共須要16byte空間(喂,爲爲何不是12byte?由於java在內存分配的時候都是以8的倍數在分配)。在java中全部的對象都繼承Object,因此不論什麼樣的對象大小都不能小於8byte。對象

計算一下下面的對象的大小?繼承

Class ObjectSample {內存

  int i = 0;數據類型

  boolean done = false;引用

  Object obj;方法

}數據

計算過程:obj爲8byte,int爲4byte,boolean爲1byte,棧中對象引用爲4byte,總數爲17byte。因爲java內存分配的時候是以8的倍數分配的,因此最小空間是24byte。內存分配

若是i被生命爲對象類型,那麼i佔用的空間就不是4byte了,而是12byte(對象要佔8個byte,引用佔4byte),實際上根據內存分配規則要佔16byte。因而可知基本類型的包裝類型佔用空間是很大的。new

相關文章
相關標籤/搜索