У меня есть несколько огромных файлов (около 10-12 файлов по 1-2 Гб каждый), которые нужно скачивать каждый час. Я храню их как Hashmap, где ключ — это версия файла, а значение — это содержимое файла в списке строк. Проблема, с которой мы сталкиваемся, заключается в том, что каждый час при загрузке новых файлов срабатывает сборщик мусора и очищает старые файлы, что вызывает длительные паузы для системы, так как файлы огромны. Я думаю о решении, в котором мы можем хранить это содержимое файлов вне кучи. Для этого мы исследовали карту хроник.
Вопрос 1. Использует ли ОС во время загрузки какие-либо буферы в динамической памяти или структуры данных? Если да, то не имеет значения, храню ли я файл вне кучи, поскольку память в куче уже выделена. Есть ли способ загружать и хранить файлы вне кучи, вообще не используя память в куче для хранения файла?
Вопрос 2: есть ли способ хранить файлы вне кучи и просто сохранять ссылку на эту память как значение в моей хэш-карте, избегая, таким образом, использования какой-либо специальной структуры данных, такой как карта хроники.
BufferedReader
) и не полностью сохранены в памяти. Если между файлами существуют зависимости обработки, вы можете уменьшить набор данных, извлекая только необходимые биты и продолжая обработку после того, как все файлы будут загружены (и предварительно обработаны). - person horstr   schedule 03.04.2021