1. 程式人生 > 其它 >java中物件大小怎麼算

java中物件大小怎麼算

物件 由頭和內容組成

  • 地址 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位元組