O que freeMemory () está realmente relatando é o espaço entre o heap e a pilha. não relata nenhuma memória desalocada que está enterrada no heap. O espaço de heap enterrado não é utilizável pela pilha e pode estar fragmentado o suficiente para não ser utilizável para muitas alocações de heap.