SORU
6 Mart 2009, Cuma


Bellek Sızıntısı C#

Hiç mümkün yönetilen bir sistemde tüm işler emin olun, bellek sızıntısı için IDispose aktiften uygulayan şeyler mi?

Bazı değişkenler dışında bırakılmış durumlar var mı?

CEVAP
7 Mart 2009, CUMARTESİ


Olay İşleyicileri açık olmayan bir bellek sızıntısı çok yaygın bir kaynağıdır. Object2, object1 object2 sonra gelen bir olay için abone olun.Öyle bir yer yok (ve kodunuzu tüm başvuruları terk) numarası() atılması ve çöp toplama olmaktan object2 önleyecek object1 olay örtülü bir başvuru yok.

MyType object2 = new MyType();

// ...
object1.SomeEvent  = object2.myEventHandler;
// ...

// Should call this
// object1.SomeEvent -= object2.myEventHandler;

object2.Dispose();

Bu bir sızıntı - kolay olayları çıkmak unutmak sık görülen bir durumdur. Tabii ki, eğer object1 object2 toplamıştır alacak, ama o kadar değil toplanan alır.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Bryan Smith

    Bryan Smith

    12 Mart 2006
  • PlayStation

    PlayStation

    16 Aralık 2005
  • Within Temptation

    Within Tempt

    18 EYLÜL 2006