例如,在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分析中得到这个数字。 –
你为什么不写一个简单的程序来测试呢? –