SORU
1 AĞUSTOS 2008, Cuma


Bir " anatomisi;Bellek Sızıntısı"

.NET bakış açım bu

  • Bir şeydirMemory Leak?
  • Nasıl uygulamanız sızıntı olup olmadığını anlayabilir misin? Etkileri nelerdir?
  • Nasıl bir bellek sızıntısı önleyebilirsiniz?
  • Eğer uygulama bellek sızıntısı varsa, işlem çıkış ya da öldürüldüğü zaman git? Veya uygulama bellek sızıntısı bile sürecin tamamlanmasından sonra sistemdeki diğer işlemleri etkiler mi?
  • Ve ne yönetilmeyen kod COM birlikte Çalışabilirlik ve/veya P erişilen hakkında Çağırmak/?

Bu soruların cevapları benim de var, ama eksik. Ne düşünüyorsun?

CEVAP
1 AĞUSTOS 2008, Cuma


Gördüğüm en iyi açıklama bu özgür Foundations of Programming ebook Bölüm 7'de.

Temel olarak, içinde .NET bir belleğe başvuruyor nesneleri kaldıklarında sızıntısı oluşur ve bu nedenle çöp toplama olamaz. Bu başvurular için amaçlanan kapsamı dışında tutarken yanlışlıkla oluşur.

Sen outofmemoryexceptions başladığında sızıntı olduğunu anlarsın ya da bellek kullanımı ne beklersiniz ötesinde güzel hafıza sayaç vardır perfmon () gider.

Anlayış .NET bellek model kaçınmanın en iyi yoludur. Özellikle, çöp toplayıcı nasıl çalıştığını ve başvurular nasıl çalıştığını anlamak (tekrar, e-kitap, bölüm 7 sevk). Ayrıca, ortak tuzaklardan dikkatli olun, muhtemelen olaylar en yaygın olanı. Eğer nesne B nesne üzerinde bir olay için kayıtlı ise, o nesne Bir nesne B B çözüm bittiğinde olayları kaydını almaktır A. için bir başvuru içerir çünkü kaybolana kadar kalacak.

Elbette, iyi bir hafıza profili-bakın, nesne grafikler ve keşfetmek yerleştirme/başvuru nesneleri görmek başvurular nereden geldiğini ve ne kök nesnesi sorumlu (red-gate ants profile, Yepyeni bir dotTrace, memprofiler gerçekten iyi bir seçenek, ya da kullanabilirsiniz salt metin windbg ve sos, ama şiddetle tavsiye ederim bir ticari/görsel ürün sürece sen gerçek bir guru).

Yönetilmeyen kod başvuruları ikisi arasında paylaşılan çöp toplayıcı tarafından yönetilen hariç unamanged kod tipik bir bellek sızıntısı, tabi olduğuna inanıyorum. Bu konuda yanlış son noktası olabilir.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Benjamin Heckendorn

    Benjamin Hec

    4 Mayıs 2008
  • CHISTOSITOJAJA

    CHISTOSITOJA

    27 HAZİRAN 2010
  • max2sims2

    max2sims2

    19 Kasım 2008