Массивы Java имеют максимальный размер?

Существует ли предел числу элементов, которое может содержать массив Java? Если так, что это?

202
задан Pops 31 December 2011 в 22:35
поделиться

2 ответа

Не видел правильного ответа, хотя его очень легко проверить.

В недавнем 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
174
ответ дан 23 November 2019 в 05:00
поделиться

На самом деле существует два ограничения. Во-первых, максимальный индексируемый элемент для массива и, во-вторых, объем памяти, доступной вашему приложению. В зависимости от объема доступной памяти и объема, используемого другими структурами данных, вы можете достичь предела памяти до того, как достигнете максимального адресуемого элемента массива.

38
ответ дан 23 November 2019 в 05:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: