Java Heap - это ограничение на размер объектов, которые вы можете иметь в системе. Если размер вашего объекта превышает кучу, то будет сгенерирована ошибка Out of Memory.
В вашем случае общий размер вашего объекта (Object в ArrayList + другие объекты в вашей системе) имеет большее значение, поскольку ваш ArrayList будет просто ссылаться на эти Object.
Вот параметры виртуальной машины, которые вы можете использовать для установки размера кучи согласно вашему требованию (из документации java
):
-Xms
п
Укажите начальный размер в байтах
пул выделения памяти. Это значение
должен быть кратным 1024 больше
чем 1 МБ. Добавьте букву k или K к
указать килобайт, или м или М до
указать мегабайт. Значение по умолчанию
составляет 2 МБ. Примеры:
-Xms6291456
-Xms6144k
-Xms6m
-Xmx
п
Укажите максимальный размер в байтах
пул выделения памяти. Это значение
должно быть кратно 1024 больше
2MB. Добавьте букву k или K к
указать килобайт, или м или М до
указать мегабайт. Значение по умолчанию
составляет 64 МБ. Примеры:
-Xmx83886080
-Xmx81920k
-Xmx80m
Проверка информации кучи из VM Spec
3.5.3 Куча
Виртуальная машина Java имеет кучу, которая используется всеми потоками виртуальной машины Java>. Куча - это область данных времени выполнения, из которой выделяется память для всех экземпляров классов и> массивов.
Куча создается при запуске виртуальной машины. Куча хранилища для объектов восстанавливается> автоматической системой управления хранилищем (известной как сборщик мусора); объекты никогда> не освобождаются явно. Виртуальная машина Java не предполагает конкретного типа автоматической> системы управления хранилищем, и метод управления хранилищем может быть выбран в соответствии с> требованиями системы разработчика. Куча может иметь фиксированный размер или может быть> расширена в соответствии с требованиями вычислений и может быть сокращена, если большая куча становится> ненужной. Память для кучи не должна быть смежной.
Реализация виртуальной машины Java может предоставить программисту или пользователю контроль над> начальным размером кучи, а также, если куча может быть динамически расширена или> сокращена, контроль над максимальным и минимальным размером кучи5.
С кучей связано следующее исключительное условие:
Если для вычисления требуется больше кучи, чем может быть предоставлено системой автоматического управления хранением, виртуальная машина Java выдает ошибку OutOfMemoryError.