【发布时间】:2015-04-15 17:27:05
【问题描述】:
我在做一个二维数组的边界检查是array[8][LIMIT];然后我尝试了几次,发现LIMIT变量不应该大于89489404,否则会出现这样的异常:
@987654323 @
我知道二维数组应该在连续空间中分配内存,但出于好奇,Java如何确定这个数字?如果我需要根据用户输入new 一个二维数组,我如何检查边界以便不会抛出OutOfMemoryError?
【问题讨论】:
我在做一个二维数组的边界检查是array[8][LIMIT];然后我尝试了几次,发现LIMIT变量不应该大于89489404,否则会出现这样的异常:
@987654323 @
我知道二维数组应该在连续空间中分配内存,但出于好奇,Java如何确定这个数字?如果我需要根据用户输入new 一个二维数组,我如何检查边界以便不会抛出OutOfMemoryError?
【问题讨论】:
数组的最大大小取决于通过 -Xmx 启动参数分配给 JVM 的内存量。如果您为 VM 分配更多内存,则它可以在可用内存耗尽之前分配更多空间。但是绝对最大值是 2^31-1,因为 java 使用有符号整数并且索引必须是正数
【讨论】:
array[x][y] 其中 xy=8 89489404 应该是极限?