Published by Joao Morais on 06 Feb 2008 at 08:26 am
Como remover vazamentos de memória
Ferramentas como FastMM melhoram o desempenho de aplicações que utilizam muita alocação dinâmica, e de quebra ainda relata se a aplicação está deixando vazamentos de memória.
Agora saber que a aplicação tem vazamento de memória é fácil, no entanto, dependendo do tamanho do projeto, torna-se mais difícil determinar aonde ela foi alocada.
Os passos abaixo ajudam a localizar a criação do objeto (em Delphi). Bom, o problema não é o fato de ele ter sido criado, mas sim de não ter sido destruido. Se este objeto não tem contagem de referência, então o trabalho será bem mais simples.
- Baixe o MemCheck aqui
- Coloque-o como a primeira unit do seu .dpr (temporariamente no lugar do seu gerenciador de memória);
- logo após o begin, coloque uma chamada à procedure MemChk;
- Em project | options | compiler, ligue o stack frames;
- Em project | options | linker, ligue o include TD32 debug info;
- Dê um build all no projeto.
Quando sua aplicação for fechada, o MemChk vai gerar uma exception no ponto em que o projeto aloca memória que não foi desalocada.
Depois de resolver o vazamento, lembre-se de voltar ao seu gerenciador de memória, desabilitar o stack frames e as informações de debug.
Se você tiver outras dicas, deixe-as nos comentários.