Вся идея обработки чанков состоит в том, чтобы не загружать весь набор данных в память, а делать это чанками.Так что использование шага, ориентированного на чанк, как вы и сделали, - это путь.
Как получить параметр размера кучи?
Хорошо, этот параметр - то, что вы передалиJVM с -Xms
и -Xmx
.См. Значения по умолчанию в документации вашей JVM.
Как извлекать данные частично?
Когда вы настраиваете этап, ориентированный на чанк, Spring Batch сделает это автоматически в соответствии сразмер куска вашего шага и выбор размера вашего JdbcCursorItemReader
.Кстати, я вижу, вы устанавливаете одинаковое значение для этих двух параметров, что хорошо!Сопоставление fetchSize и chunkSize обычно приводит к лучшей производительности.
Так что я думаю, что ваша проблема на самом деле не является проблемой, потому что это нормально, что при увеличении размера чанка больше элементов будет загружаться в память, пока вы не получите OOMошибка.