Хм, с этим можно как-то бороться?
Выделять память кусками одинакового размера. Выделить нужную память всю сразу целиком, а не постепенно кусками разного размера и т.д.
Например у меня, при создании zip-файла, очень сильно фрагментировало память хранение структуры директорий zip-файла в виде списка (дело было в питоне) мелких структур разного размера, по одной на файл. Я переделал это всё на один бинарный буфер (аля Vec<u8>), который требовал гораздо меньше аллокаций. Мне это помогло (мне фактически не нужна была структура директорий, а только байтики из которых она состоит, что бы записать в конец zip-файла)