Несколько важных вещей для заметки.
Вы упомянули, что нормально работают функционально с небольшим набором данных, но не хватает памяти с большими наборами данных.вам необходимо определить, является ли его создание наборов данных причиной нехватки памяти или переносом наборов данных в один и тот же процесс.
Вы делаете что-то, что заставляет множество объектов оставаться в памяти.Еще раз проверьте свой код и обнулите некоторые объекты после использования. Это облегчит жизнь сборщику мусора.Играйте с настройками MaxPermSize JVM.Это даст вам дополнительное пространство для строк.
Этот подход будет иметь ограничение, даже если вы можете передавать большие наборы данных для одного пользователя, это может выйти из памяти для нескольких пользователей.
Предложение, которое может работать для вас.
Разбейте это в асинхронном процессе. Сделайте создание больших наборов данных отдельным процессом, а загрузку этих наборов данных - другим процессом.
Делая наборы данных доступными для загрузки, вы можете очень хорошо контролировать потребление памяти с помощью потоковой загрузки.