java中物件大小怎麼算
阿新 • • 發佈:2021-12-16
物件 由頭和內容組成
頭
- 地址 4個位元組
- 標記 8個位元組, 記錄鎖/hash/age等
- 陣列 如果是陣列物件,這裡有額外的4個位元組
內容
物件包含的屬性
屬性是物件的話,是記錄記憶體地址,4個位元組
方法呢?(方法儲存在方法區[JVM標準,JAVA8實現在元空間]) 不在物件堆裡
8位元組對齊
Java物件採用的是8位元組對齊。物件大小必須是8的倍數,不足需要補齊。比如,計算一個物件只需要20位元組,那麼實際佔用24位元組
用程式碼檢視佔用多少位元組
- pom檔案中加入依賴
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-core</artifactId> <version>8.10.1</version>
</dependency>
- 程式碼
import org.apache.lucene.util.RamUsageEstimator; public class Test3 { public static void main(String[] args) { Integer i = new Integer(999); System.out.println(RamUsageEstimator.shallowSizeOf(i));//16 } }
- 解釋: Integer物件,為什麼佔用16個位元組
頭 佔用 4+8
內容 裡面有一個int, 佔用4
再根據位元組對齊,所以加起來是16位元組