Java 2D数组长度的限制是什么?

时间:2015-02-14 21:23:26

标签: java arrays limit

我正在对一个二维数组进行边界检查array[8][LIMIT];然后我尝试了几次,发现LIMIT变量不应该大于89489404,否则会出现这样的异常:<登记/> Exception in thread "main" java.lang.OutOfMemoryError: Java heap space at testLimit.testLimit.main(testLimit.java:9)

我知道2D阵列应该在连续空间中分配内存,但出于好奇,Java如何决定这个数字?如果我需要new基于用户输入的2D数组,如何检查边界以便不会抛出OutOfMemoryError

1 个答案:

答案 0 :(得分:1)

数组的最大大小取决于通过-Xmx启动参数分配给JVM的内存量。如果为VM分配更多内存,则可以在耗尽可用内存之前分配更多空间。但是绝对最大值是2 ^ 31-1,因为java使用有符号整数并且指标必须是正数

相关问题