2013-04-18 36 views
10

Trong Java, bộ nhớ được sử dụng để chiếm mảng int[] có kích thước n tương đương với (4 + n) * 4 byte.Kích thước bộ nhớ của một hệ thống 32 bit int_] mảng

Thực tế có thể được chứng minh bằng mã bên dưới:

public class test { 

    public static void main(String[] args) { 

     long size = memoryUsed(); 
     int[] array = new int[2000]; 
     size = memoryUsed() - size; 
     if (size == 0) 
      throw new AssertionError("You need to run this with -XX:-UseTLAB for accurate accounting"); 
     System.out.printf("int[2000] used %,d bytes%n", size); 

    } 

    public static long memoryUsed() { 
     return Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory(); 
    } 

} 

rất thú vị là số 4 trong ngoặc đơn. Phần đầu tiên của 4 byte có tham chiếu mảng, chiều dài mảng thứ hai, sau đó những gì mất 8 byte còn lại?

Trả lời

10

Phần đầu tiên của 4 byte lấy tham chiếu mảng, chiều dài mảng thứ hai, sau đó điều gì cần 8 byte còn lại?

Đối tượng thông thường trên đầu - thường là một vài byte cho biết loại đối tượng và một vài byte được liên kết với màn hình cho đối tượng. Đây hoàn toàn không phải là một mảng cụ thể - bạn sẽ thấy nó cho tất cả các đối tượng.

Các vấn đề liên quan