Posts Tagged “bileşenler”

Delphi 2007 de ReportMemoryLeaksOnShutdown adli guzel bir global degisken mevcut. Eger bu degiskene True degeri atarsaniz programi sonlandirdiginizda olusan hafiza kayiplarini cok detayli olmasada gorebilirsiniz… Bu degiskenin diger bir yarari VCL icerisindeki sakat kutuphaneleri gormenize yardimci olur. En basitinden Indy i ele alalim. Indy icerisinde yer alan TIDHTTP bilesenini kullanmayan nerdeyse yok gibidir. TIDHTTP bilesenini kullanmak demek uses satirina IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP unitlerinin eklenmesi demektir.

Simdi yeni bir proje olusturalim.
Project–> View Source kismindan dpr dosyamizin kaynak kodunu acalim.
Application.Initialize; satirinin hemen ustune ReportMemoryLeaksOnShutdown :=true; satirini ekleyelim.


begin
ReportMemoryLeaksOnShutdown :=true;
Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.CreateForm(TForm2, Form2);
Application.Run;
end.

Formun uzerine bir adet TIDHTTP bileseni birakalim. F9 ile costuralim. Hicbir islem yapmadan -ki zaten yapacak bir islem yoktur- programi kapatalim. Iste olusan Memory Leak ler karsimizda…

40 byte lik nur topu gibi bir memory leak’imiz oldu :)

Peki idhttp yi form uzerinden silersek olusan bu hafiza kaybindan kurtulabilir miyiz ?
Hemen deniyoruz.


Hayir, malesef kayiplar yine karsimizda cunku uses satirinda ki indy ile ilgili olan unitler hala orada.

Uses satirindaki indy ile alakali olan unitleri elimizle silip yeniden derliyoruz. Denememizi yeniden yapiyoruz. Unitlerle birlikte hafiza kaybida yok oluyor…

Gozume carpan diger bir kutuphane IntraWeb. IWVCLBaseControl unitini uses satirina ekler eklemez 508 byte lik bir memory leak sahibi olmus oluyorsunuz….

Memory leak ‘ ler uzerinde daha fazla denetime sahip olmak icin acik kaynak kodlu Denomo yu kullanabilirsiniz…

Comments No Comments »