Существует ли предел числу элементов, которое может содержать массив Java? Если так, что это?
Не видел правильного ответа, хотя его очень легко проверить.
В недавнем HotSpot VM правильный ответ - Integer.MAX_VALUE - 5
. Как только вы выйдете за эти пределы:
public class Foo {
public static void main(String[] args) {
Object[] array = new Object[Integer.MAX_VALUE - 4];
}
}
Вы получите:
Exception in thread "main" java.lang.OutOfMemoryError:
Requested array size exceeds VM limit
На самом деле существует два ограничения. Во-первых, максимальный индексируемый элемент для массива и, во-вторых, объем памяти, доступной вашему приложению. В зависимости от объема доступной памяти и объема, используемого другими структурами данных, вы можете достичь предела памяти до того, как достигнете максимального адресуемого элемента массива.