Se / quando a memória heap não desalocada é recuperada?

Eu tenho executado testes de memória durante a noite em um sistema Linux embarcado. Usando o vmstat, observei que a memória livre diminui constantemente com o tempo. De acordo com algunssmaps análise emprocfs, o heap de um processo cresce aproximadamente na mesma taxa. Eu suspeitei de um vazamento de memória e encontrei alguns pontos no código ondenew edelete são usados ​​regularmente. No entanto, eu não vi umnew chamadas sem correspondênciadelete chamadas.

Eu corri o teste de memória novamente e esta manhã limpou os caches de memória com a seguinte chamada

echo 3 > /proc/sys/vm/drop_caches

A memória livre listada no vmstat desceu para um valor próximo de quando o teste foi iniciado.

O kernel recupera regularmente as páginas de heap não utilizadas? Em caso afirmativo, existem outras vezes além da acima que isso é feito? Provavelmente quando a memória livre fica abaixo de um certo limite?