Java Heap - это ограничение на размер объектов, которые вы можете иметь в системе. Если размер вашего объекта находится за пределами кучи, тогда генерируется ошибка «Из памяти».
В вашем случае ваш общий размер объекта (объект в ArrayList + другие объекты в вашей системе) имеет значение больше, поскольку ваш ArrayList будет просто ссылаться на эти объекты.
Вот варианты VM вы можете использовать, чтобы установить размер кучи согласно вашему требованию (от the java
documentation):
-Xms
н
Укажите начальный размер, в байтах, памяти пул распределения. Это значение должно быть кратно 1024 больше , чем 1 МБ. Добавьте букву k или K в укажите килобайты, или m или M - , укажите мегабайты. Значение по умолчанию составляет 2 МБ. Примеры:
-Xms6291456
-Xms6144k
-Xms6m
-Xmx
н
Указать максимальный размер, в байтах, память распределения пула. Это значение должно быть кратно 1024 больше, чем 2 МБ. Добавьте букву k или K в укажите килобайты, или m или M - , укажите мегабайты. Значение по умолчанию составляет 64 МБ.Примеры:
-Xmx83886080
-Xmx81920k
-Xmx80m
Проверить информация вороха от VM Spec
3.5.3 Heap
Виртуальная машина Java имеет кучу, что является общим среди всех виртуальных машин Java> резьб. Куча - это область данных времени выполнения, из которой выделяется память для всех экземпляров класса и> массивов. Куча создана при запуске виртуальной машины. Хранилище кучи для объектов регенерируется системой автоматического управления хранилищем (известной как сборщик мусора); объекты никогда> явно не освобождены. Виртуальная машина Java не принимает определенного типа автоматической системы хранения данных, и технология управления хранением может быть выбрана в соответствии с требованиями системы разработчика. Куча может иметь фиксированный размер или может быть> расширена, как требуется при вычислении, и может быть сокращена, если большая куча становится ненужной. Память для кучи не обязательно должна быть смежной.
Реализация виртуальной машины Java может предоставить программисту или пользователю контроль над начальным размером кучи, а также, если куча может динамически расширяться или> сокращаться, контролировать максимальный и минимальный размер кучи. 5
следующая исключительное состояние связано с кучей:
Если вычисление требует больше, чем куча может быть доступна с помощью автоматизированной системы управления хранением данных, виртуальная машина Java бросает OutOfMemoryError.
Черт, я просто проектировал объект с полями 65536 :( – fish
@fish: это не дизайн, это авария ;-) –