Во время тестирования
fff обнаружилось, что при создании большого Vec<u64> процесс потребляет заметно больше оперативной памяти, чем требуется для индекса.Причиной оказался аллокатор, который мог резервировать лишнюю память при работе с крупными буферами.
Теперь на Unix-системах
fff выделяет память напрямую через mmap:* рассчитывает точный объём памяти
* округляет его до размера системной страницы
* создаёт приватное анонимное отображение
* работает с данными через
*mut u64* освобождает память вызовом
munmapНа остальных платформах по-прежнему используется обычный
Vec<u64>.В результате
fff запрашивает у ядра ровно столько страниц, сколько необходимо для хранения и обработки индекса.
