Konuyu Oyla:
  • Derecelendirme: 3.5/5 - 2 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Datasetin bağlı olduğu Myquery'i free Etmek (MemoryLeak Tespiti)
#1
Sorumun başlığını yazmakta zorlandım Smile

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ı
WWW
Cevapla
#2
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.
Cevapla
#3
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ı ?
WWW
Cevapla
#4
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.
Cevapla
#5
Peki, projemde MemoryLeak var mı yokmu, bu kaçakları tespit edebilecek bir sistem var mı delphide bu kaçaklar nasıl tespit edilir.
WWW
Cevapla
#6
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.



Cevapla
#7
(25-08-2016, Saat: 14:34)Cyber Adlı Kullanıcıdan Alıntı: 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.
[url=https://www.youtube.com/watch?v=7yMs0t0t-7s][/url]

Teşekkürler ilk fırsaatta inceleyeceğim
WWW
Cevapla
#8
Güzelmiş bu,
Memory Leak'lara son Smile

E3pdnA.png
WWW
Cevapla
#9
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.
WWW
Cevapla
#10
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.
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
Wink Tüm forum arkadaşlarıma merhaba, sizi davet etmek istiyorum emailx45 8 1.882 05-11-2025, Saat: 20:53
Son Yorum: emailx45
  Çalışan Exe Formuna Müdahale Etmek SercanTEK 4 1.581 01-03-2024, Saat: 22:51
Son Yorum: SercanTEK
  Free vs FreeAndNil vs DisposeOf yanniosman 6 3.857 08-01-2024, Saat: 11:50
Son Yorum: RAD Coder
  Edit içindeki tarihin doğru olup olmadığını kontrol etmek? hasansavci 2 1.599 17-10-2023, Saat: 03:35
Son Yorum: mcuyan
  local ag baglı pcleri görmek sadikacar60 6 2.579 20-10-2021, Saat: 16:40
Son Yorum: COMMANDX



Konuyu Okuyanlar: 1 Ziyaretçi