Некоторые идеи, чтобы посмотреть в:
1) Дайте JVM больше памяти: -Xmx=2G
2) Используйте более эффективная структура данных. Экран 80k легко впишется в небольшую память. Моя ставка заключается в том, что у вас есть своя матрица между двумя коллекциями. Например, матрица расстояний для местоположений VRP 20k требует (20k)² = 400m
целых чисел (каждая из которых не менее 4 байтов), поэтому для сохранения в памяти ее наиболее эффективной формы (массива) требуется почти 2 ГБ ОЗУ. Используйте профилировщик, такой как JProfiler или VisualVM, чтобы узнать, какие объекты данных занимают столько памяти.
3) Прочтите главу о «планировании клонирования». Иногда разделение задания на Job и JobAssignment может сэкономить память, потому что нужно клонировать только объект JobAssignment, тогда как в другом случае все, что ссылается на Job, тоже должно быть клонировано.