Arsip: Mendeteksi Memory Leak (Memory Leak Detection)


by reza in TipDanTrik more 14 years ago 5329
Sebuah Aplikasi yang baik dan kuat/robust application seminimal mungkin harus terhindar dari bug walaupun pastinya no body's perfect,dan satu hal lagi yang menjadi ukuran baiknya sebuah apllikasi adalah tidak memiliki kebocoran memory atau lebih dikenal dengan Memory Leak.saya coba mengulas sedikit apa itu memory leak.
Memory Leak adalah suatu keadaan dimana suatu blok memory yang dialokasikan tp tidak pernah di bebaskan oleh pihak yang bertanggung jawab(program),jika memory yang dialokasikan tidak dibebaskan dari memory,maka akan mengurangi ketersedian memori yang dapat digunakan oleh sistem operasi dan aplikasi lainnya, sehingga apabila terdapat dalam jumlah yang besar, dapat mempengaruhi kinerja sistem operasi dan aplikasi lainnya.
Memory leak murni merupakan kesalahan pembuat program yang ceroboh dan kurang hati – hati dalam merancang / mengembangkan programnya.

Contoh Memory Leak
Contoh Berikut kita akan membuat sebuah memory leak
hanya contoh:

Procedure TForm1.Button1Click(Sender:TObject);
var
aObject:TObject;
begin
aObject:=TObject.Create;
ShowMessage('an Object was created!');
end;


kode diatas sudah benar dan berhasil dikompile dan ditutup dengan baik,program kelihatannya berjalan baik-baik saja.tetapi sebenarnya ada sebuah blok memory yang dialokasikan untuk aObject dan tidak pernah dibebaskan walaupun kita sudah menutup program nya.blok memory yang tidak terpakai ini dapat dibebaskan setelah komputer di restart atau dengan menggunakan software memory cleaner.

Bagaimana mendeteksi Memory Leak?
Untuk mendeteksi Meory leak kita bisa menggunakan tool seperti eurekaLog dll.
Sejak Delphi 2006 keatas delphi menggunakan FastMM sebagai default Memory Manager nya ,dan mempunyai fasilitas untuk melaporkan adanya memory leak yang terjadi ketika aplikasi di tutup.secara default fasilitas  ini tidak diaktifkan,kita dapat mengaktifkannya dengan satu baris kode saja pada file .dpr di project kita.
contoh pada file .dpr project :

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


dan compile kembali project tadi kemudian jalankan.setelah di tutup program tadi maka akan menampilkan laporan memory leak seperti berikut :


Fasilitas Laporan ini memang tidak menunjukan secara detail Unit,Procedure/Function,dan baris code dimana kesalahan tersebut terjadi.tetapi jika anda menggunakan produk komersial seperti eurekalog anda dijamin akan puas,tapi setidak nya lebih baik dari pada tidak sama sekali  .
Jika anda Menggunakan Delphi 2006 kebawah anda bisa mendownload FastMM dan mengintregasikanya dengan delphi.

Semoga bermanfaat,Keep Spirit!

dikutip dari: http://fajardelphiscript.blogspot.com

AI Forward

🚀 We're thrilled to partner with Alibaba Cloud for "AI Forward - Alibaba Cloud Global Developer Summit 2025" in Jakarta! Join us and explore the future of AI. Register now: https://int.alibabacloud.com/m/1000400772/
#AlibabaCloud #DeveloperSummit #Jakarta #AIFORWARD

Local Business Directory, Search Engine Submission & SEO Tools FreeWebSubmission.com SonicRun.com