Проблема, которую вы описываете, - утечка памяти (не проблема сборщика мусора).
По какой-то причине в вашей куче занято большое количество объектов, которые не могут быть переработаны GC из-за их доступности на графе объектов.
Все, что превышает 20 столбцов, начинает потреблять дополнительную память, каждое редактирование, загрузка добавляет к предыдущему использованию памяти.
Это означает, что каждое редактирование, загрузка и т. Д. Приводит к утечке памяти.
Вам нужно найти причину утечки памяти, используя инструмент для анализа дампа кучи. Я могу предложить бесплатные JVisualVM и Eclipse MAT.
Я бы порекомендовал взять два дампа кучи:
- первый раз после перезапуска приложения
- секунда после нескольких правок, загрузка (избегайте заполнения всей памяти, работа с дампом кучи 20 ГБ - это боль)
В инструментах анализа дампов кучи вы можете сравнивать дампы и находить, какие объекты просочились. Этот же инструмент также позволит вам отслеживать пути от экземпляров просочившегося объекта к корню GC.