2013-04-18 17 views
10

Javaの場合、int[]のサイズがnのアレイを占有するために使用されるメモリは、(4 + n) * 4バイトになります。Java 32ビットシステムのメモリサイズint [] array

は、実際に以下のコードによって証明することができます。

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(); 
    } 

} 

ので興味深い括弧内の数字4です。 4バイトの最初の部分は配列の参照、2番目の配列の長さ、次に8バイトが残っていますか?

答えて

10

4バイトの最初の部分は配列参照、2番目の配列の長さ、次に8バイトは残っていますか?

通常のオブジェクトオーバーヘッド - 通常、オブジェクトのタイプを示す数バイトと、オブジェクトのモニタに関連付けられた数バイト。これは配列特有のものではありません。すべてのオブジェクトに対してその配列が表示されます。

関連する問題