2015-11-11 53 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分析中得到这个数字。 –