ana sayfa > Bilgisayar > .NET’te Bellek Sızıntısı (Memory Leak)

.NET’te Bellek Sızıntısı (Memory Leak)

Pazar, 15 Şub 2009

Bundan önceki birkaç yazımda projede XSLT kodu yazdığımı ve IODD dosyalarını EDD kodlarına çevirdiğimi yazmıştım. Bir süre önce arkadaş projenin hafıza kullanımı incelerken çevirme tarafında bir sızıntı olduğunu söyledi. En sonunda cuma günü baktığımda yarım gün uğraşının sonucunda sorunun aslında bende değil de .NET’te olduğunu öğrendim. Özellikle XslCompiledTransform sınıfını Debug parametresi true ile oluşturduğumuz Debug buildi her çevirmenin sonunda yaklaşık 30MB’ın çöpe gitmesine sebep oluyor. İyi ki betik (script) kullanmıyorum, yoksa iyice uçacakmış hafıza. Üzülsem mi sevinsem mi bilemedim tabii. Çözüm olarak bu sınıfın Load metodunu mümkün olduğu kadar az çağırın, aynı çevrim dosyasını devamlı hafızaya yüklemekten kaçının, eskisini kullanın; bu sınıfın oluşturduğu geçici dosyaları elle silin gibi öneriler var. En kökten çözüm de çevrimi yapan kodu asıl programdan daha farklı bir AppDomain’den çalıştırmak imiş, bu sayede çevrim bittiğinde arka planda onu çalıştıran uygulama kapandığı için boşa tüketilen kaynaklar temizlenebiliyormuş.  Microsoft’u bu yaklaşımından ve aydınlatıcı önerilerinden dolayı ötürü tebrik ediyorum…

Konu hakkında MSDN’de ilgili sınıfın constructoru altında Community Content’te bir açıklama yapılmış durumda. Bununla yetinmeyenler için Google her zaman elinizin altında…

Bilgisayar , , , ,

  1. şimdilik yorum yok.
  1. şimdilik geri bağlantı yok