我得从中找到 Do Java arrays have a maximum size? 数组大小有最大限制。
可能意图可能耗尽堆空间。是的,我同意这一点。
我无法理解以下内容:
但是为什么每个阵列都有这个限制?
如果我有很多这么大的数组呢?
为什么不在总体上达到一定的堆空间阈值(总消耗量)时抛出异常,而不是每个数组都有上限?
注意:
在Python中,他们有此限制How Big can a Python Array Get?
在C中,似乎没有限制(使用的硬件除外)The maximum size of an array in C
答案 0 :(得分:5)
java中的数组由int值索引。所以,即使你有内存,最大的没有。数组可以容纳的元素是2 ^ 31-1(如果我的数字错了,请纠正我......但是你明白了。)
但是,你的内存将限制你可以在堆中保留多少个这样大的数组......
答案 1 :(得分:3)
数组的length
是int
,因此您不能允许具有超过Integer.MAX_VALUE
个元素的数组而不会中断length
。打破length
将是巨大的;它需要在整个地方进行源代码更改和重新编译。
鉴于您已经拥有length
字段规定的长度上限,Integer.MAX_VALUE
上限或Integer.MAX_VALUE - 5
之类的上限之间没有太大差异。
答案 2 :(得分:0)
让我们说如果你有一个阵列
String[] array = new String[22L];
eclipse中的错误消息
Type mismatch: cannot convert from long to int
清楚地告诉我,数组的大小取长度为int,受限于** max int值,受限于32位**