2015-11-11 81 views
-1

例如,在java中聲明new int[n][n]將導致n個數組引用,每個數組包含n個元素。int [n] []佔用多少內存?

如果我聲明new int[n][],這需要多少內存?我懷疑這只是n引用null,但我想確認這一點。

+0

你爲什麼不寫一個簡單的程序來測試呢? –

回答

2

在Java我們有以下尺寸:

int = 4字節

int[] = 4N + 24個字節

int[][]〜4MN字節

Array = 24字節+存儲器爲每個array entry

所以,你的陣列new int[n][]是從0n的一維數組。通常需要4N+24個字節(陣列的24個字節+每個陣列條目的4*N個字節)。

順便說一下,它是JVM的依賴和可能是一個更準確的答案是~4N字節加上頭信息。

+0

你對「+ 24字節」有任何參考嗎?如果你有,它可能已經過時了。看看http://stackoverflow.com/questions/26357186/what-is-in-java-object-header或相關的帖子。 –

+0

@Erwin Bolwidt,可能是JVM的依賴。我從algs4.cs.princeton.edu/14分析中得到這個數字。 –