我正在对一个二维数组进行边界检查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
?
答案 0 :(得分:1)
数组的最大大小取决于通过-Xmx启动参数分配给JVM的内存量。如果为VM分配更多内存,则可以在耗尽可用内存之前分配更多空间。但是绝对最大值是2 ^ 31-1,因为java使用有符号整数并且指标必须是正数