Tente implementar seu próprio algoritmo de coleta de lixo e tente executá-lo no tempo de montagem e, quando o espaço que falta para executar, inicie novamente um thread de coleta de lixo separadamente.
Será muito mais fácil escrever seus arquivos como fragmentos para que, quando você apagar um bloco ou página com metade de um arquivo, ainda possa gravá-lo em algum lugar e obter a página para uso futuro.
A parte complicada é como abrir um arquivo com vários fragmentos em todo o sistema de arquivos.