Если вы продолжаете выделять и хранить ссылки на объект, вы будете заполнять любой объем памяти, который у вас есть.
Один из вариантов - сделать прозрачный файл закрытым и открывать, когда они переключают вкладки (вы сохраняете только указатель на файл, а когда пользователь переключает вкладку, вы закрываете и очищаете все объекты ... это сделает изменение файла происходит медленнее ... но ...), и, возможно, в памяти остается только 3 или 4 файла.
Другая вещь, которую вы должны сделать, это когда пользователь открывает файл, загружает его и перехватывает любую ошибку OutOfMemoryError, а затем (поскольку невозможно открыть файл) закрывает этот файл, очищает его объекты и предупреждает пользователя, что он следует закрыть неиспользуемые файлы.
Ваша идея динамического расширения виртуальной памяти не решает проблему, поскольку машина ограничена в ресурсах, поэтому вы должны быть осторожны и решать проблемы с памятью (или, по крайней мере, быть осторожными с ними).
Вот пара подсказок, которые я видел с утечками памяти:
-> Имейте в виду, что если вы положили что-то в коллекцию и впоследствии забыли об этом, у вас все еще есть сильная ссылка на нее, поэтому аннулируйте коллекцию, очистите ее или что-то с ней сделайте ... если не вы будет трудно найти утечку памяти.
-> Возможно, использование коллекций со слабыми ссылками (weakhashmap ...) может помочь с проблемами памяти, но вы должны быть осторожными с этим, так как вы можете обнаружить, что объект, который вы ищете, имеет было собрано.
-> Еще одна идея, которую я нашел, - разработать постоянную коллекцию, которая хранится в наименее используемых и прозрачно загруженных объектах базы данных. Это, вероятно, будет лучшим подходом ...