例如,在java中聲明new int[n][n]
將導致n個數組引用,每個數組包含n個元素。int [n] []佔用多少內存?
如果我聲明new int[n][]
,這需要多少內存?我懷疑這只是n引用null,但我想確認這一點。
例如,在java中聲明new int[n][n]
將導致n個數組引用,每個數組包含n個元素。int [n] []佔用多少內存?
如果我聲明new int[n][]
,這需要多少內存?我懷疑這只是n引用null,但我想確認這一點。
在Java我們有以下尺寸:
int
= 4字節
int[]
= 4N + 24個字節
int[][]
〜4MN字節
Array
= 24字節+存儲器爲每個array entry
所以,你的陣列new int[n][]
是從0
到n
的一維數組。通常需要4N+24
個字節(陣列的24
個字節+每個陣列條目的4*N
個字節)。
順便說一下,它是JVM的依賴和可能是一個更準確的答案是~4N
字節加上頭信息。
你對「+ 24字節」有任何參考嗎?如果你有,它可能已經過時了。看看http://stackoverflow.com/questions/26357186/what-is-in-java-object-header或相關的帖子。 –
@Erwin Bolwidt,可能是JVM的依賴。我從algs4.cs.princeton.edu/14分析中得到這個數字。 –
你爲什麼不寫一個簡單的程序來測試呢? –