为什么java中的数组大小有最大限制?

Har*_*nam 2 java stack heap-memory

我从 Do Java数组中找到了最大的大小? 数组大小有一个最大限制.

可能是因为它可能耗尽堆空间.是的,我同意这一点.

我无法理解以下内容:

  1. 但为什么每个阵列都有这个限制?

  2. 如果我有这么大的数组?

  3. 为什么不在总体上达到一定的堆空间阈值(总消耗量)时抛出异常,而不是每个数组都有上限?

注意 :

  1. 在Python中,他们有这个限制Python数组多大?

  2. 在C中,似乎没有限制(除了使用的硬件)C中数组的最大大小

Hir*_*rak 5

java中的数组由int值索引.所以,即使你有内存,最大的没有.阵列可以容纳的元素是2 ^ 31-1(如果我的号码错了,请纠正我......但你明白了).

但是,你的内存将限制你可以在堆中保留多少这样的大型数组......