Datasetin bağlı olduğu Myquery'i free Etmek (MemoryLeak Tespiti) - Baskı Önizleme +- Delphi Can (https://www.delphican.com) +-- Forum: Delphi (https://www.delphican.com/forumdisplay.php?fid=3) +--- Forum: Genel Programlama (https://www.delphican.com/forumdisplay.php?fid=6) +--- Konu Başlığı: Datasetin bağlı olduğu Myquery'i free Etmek (MemoryLeak Tespiti) (/showthread.php?tid=109) Sayfalar:
1
2
|
Datasetin bağlı olduğu Myquery'i free Etmek (MemoryLeak Tespiti) - yhackup - 25-08-2016 Sorumun başlığını yazmakta zorlandım Bir uygulamamda Myquery ile sorgumu yapıp, dataset ile dbgridime aktarıyorum. Myquery create ettikten sonra , free edemiyorum edersem datasetim , tablom boşalıyor, nasıl bir yol izlemek daha mantıklı Cvp: Datasetin bağlı olduğu Myquery'i free Etmek. - ozcanm - 25-08-2016 Merhaba, Runtime anında yapacağın Create işlemleri için mutlaka bunu Formun onCreate eventinde tanımlayarak yap. Myquery :=TMyquery.Create(Self) Formun FormClose eventinde Myquery.Free; formun FormDestroy eventinde ise Myquery:=Nil; şeklinde kullan. Bu şekilde MemoryLeak oluşmasını da önlemiş olursun. İyi Çalışmalar. Cvp: Datasetin bağlı olduğu Myquery'i free Etmek. - yhackup - 25-08-2016 Mantıklı Ben hep işlem içerisinde create edip free ediyordum, Peki self olarak create ettiğimde, Form kapandığında formla birlikte Myqueryde yok olmaz mı ? Cvp: Datasetin bağlı olduğu Myquery'i free Etmek. - ozcanm - 25-08-2016 Aynen dediğiniz gibi olacaktır. Benim kullandığım yapı xForm ile işlemim bittiği an o formu hafızadan silerim. Aynı Myquery de yaptığım gbi. eğer bu formu sürekli kullacaksanız bu işlemi Ana formunuzun OnCreate kısmında Myquery :=TMyquery.Create(Self) şeklinde yapıp tabi ana formu referans gösterek kullanırsınız. Anaform.Myquery şeklinde, OnClose ve OnDestroy olayında Free ve Nill yapabilirsiniz. yine hafıza kaçaklarını önlemiş olursunuz. bu konuda ilk başlarda inanılmaz sıkıntılar yaşadığım için ilk Başta yapıya göre Create(Self yada Application) tanımlamasının ardından ilgili yerlerde de Free ve Nill yaparım ki daha sonra acaba hangi Create ten dolayı sıkıntı var dememek için. Cvp: Datasetin bağlı olduğu Myquery'i free Etmek. - yhackup - 25-08-2016 Peki, projemde MemoryLeak var mı yokmu, bu kaçakları tespit edebilecek bir sistem var mı delphide bu kaçaklar nasıl tespit edilir. Cvp: Datasetin bağlı olduğu Myquery'i free Etmek. - ozcanm - 25-08-2016 tabikide Project Menüsünden View Source ekranına geldiğinizde begin ReportMemoryLeaksOnShutdown :=True; // bu satırı eklemeniz yeterli olacaktır. Application.Initialize;yazdığınızda projeyi derleyip çalıştırın çıkışta size bilgi verecektir. Daha detaylı bilgi almak isterseniz EurekaLog Burayı inceleyebilirsiniz. İyi Çalışmalar. Cvp: Datasetin bağlı olduğu Myquery'i free Etmek. - yhackup - 25-08-2016 (25-08-2016, Saat: 14:34)Cyber Adlı Kullanıcıdan Alıntı: tabikide Project Menüsünden View Source ekranına geldiğinizdebegin ReportMemoryLeaksOnShutdown :=True; // bu satırı eklemeniz yeterli olacaktır. Application.Initialize;yazdığınızda projeyi derleyip çalıştırın çıkışta size bilgi verecektir. Teşekkürler ilk fırsaatta inceleyeceğim Cvp: Datasetin bağlı olduğu Myquery'i free Etmek. - yhackup - 26-08-2016 Güzelmiş bu, Memory Leak'lara son Cvp: Datasetin bağlı olduğu Myquery'i free Etmek. - esistem - 26-08-2016 Dün baktım buna ben, Delphi 7 de çalışmadı o kod yada ben beceremedim. FastMM diye bir kod buldum, bu gün vakit bulabilirsem onu inceliycem. Cvp: Datasetin bağlı olduğu Myquery'i free Etmek. - ozcanm - 26-08-2016 Malesef Delphi 7 ile uyumluluğu yok hocam, Burada Tugrul Hocamızın bu konuyla ilgili bir açıklaması var. Alıntı:Eğer Delphi 2010 ile yazılım geliştiriyorsanız; projenizin kaynak kodunda ReportMemoryLeaksOnShutDown := true; satırını aktif hâle getirin; Delphi 2010 kullanmıyorsanız EurekaLog gibi bir yazılımın demo sürümünü indirip Delphi’ye kurun ve muhtemel Memory Leak’leri tespit etmeye çalışın. İyi Çalışmalar. |