Detectando vazamentos de memória a partir do Delphi 2006
Uma das ótimas melhorias do Delphi 2006 foi trazer o FastMM um gerenciador de memória.
Isso tornou a IDE muito mais rápida, assim como os aplicativos compilados nela.
Esta propriedade quando atribuída a um form, quando fecho-o, o delphi retorna um ShowMessage com os Objetos que ainda então em memória e que não foram destruídos/liberados para aquele determinado form.
Assim da para detectar vazamentos de memória, que são objetos criados pelo aplicativo, mas não propriamente destruídos.
Para sentir o poder deste recurso, crie um novo projeto VCL Win32 e no OnCreate do form principal coloque:
TStringList.Create;
Execute o aplicativo e feche. Nada acontece, mas houve um vazamento de memória porque você criou um objeto e não o destruiu. Agora adicione ao evento a seguinte linha:
ReportMemoryLeaksOnShutdown := True;
Execute o aplicativo novamente, e feche. Você verá um aviso que houve um vazamento de memória:
Esta propriedade quando atribuída a um form, quando fecho-o, o delphi retorna um ShowMessage com os Objetos que ainda então em memória e que não foram destruídos/liberados para aquele determinado form.
Assim da para detectar vazamentos de memória, que são objetos criados pelo aplicativo, mas não propriamente destruídos.
Para sentir o poder deste recurso, crie um novo projeto VCL Win32 e no OnCreate do form principal coloque:
TStringList.Create;
Execute o aplicativo e feche. Nada acontece, mas houve um vazamento de memória porque você criou um objeto e não o destruiu. Agora adicione ao evento a seguinte linha:
ReportMemoryLeaksOnShutdown := True;
Execute o aplicativo novamente, e feche. Você verá um aviso que houve um vazamento de memória:

Quer deixar ainda melhor? Então ao invés de deixarmos o aviso de memory leak ativado o tempo todo, talvez seja mais interessante que sejamos avisados apenas se estivermos executando o aplicativo dentro do Delphi, não? Você não vai querer usuários seus recebendo estes avisos. Para isso, basta mudar o código para:
ReportMemoryLeaksOnShutdown := DebugHook <> 0;
0 comentários:
Postar um comentário