Каждая запись в списке представляет собой отдельный объект со ссылкой на предыдущий и следующий узлы, а также на текущее значение.
Если предположить 8 байтов на ссылку и служебные данные объекта равны 16байт, это означает, что для каждой полученной вами записи:
- Объект записи: 40 байт (3 ссылки + накладные расходы)
- A Длинный объект: 24 байта (данные + накладные расходы)
Итак, после 6000000 записей это будет около 384M ... с которыми у вас все еще должно быть все в порядке.(В зависимости от вашей JVM, я бы ожидал, что размер ссылки и накладные расходы на объект также будут ниже.)
Интересно, установлен ли ваш MAVEN_OPTS в неправильном месте или не используется для аргументов JVMпо какой-то причине.Я только что попытался запустить это на своем Windows-боксе (не в качестве модульного теста - просто как main
метод), и при выделении по умолчанию JVM он завершается неудачно после 6 миллионов записей для меня тоже.С -Xmx1024M
получается 25 миллионов записей, что предполагает меньшие издержки, чем я оценивал выше.(Хотя я на 32-битной виртуальной машине.)
Это, безусловно, означает, что ваш MAVEN_OPTS не делает то, что вы хотите ...