2010-05-16 19 views
6

.NET için OpenCV sarıcısı olan EmguCV kullanıyorum. Oluşturulan tüm nesneleri elimden aldığım halde uygulağım hala daha fazla bellek kullanıyor (bırakma yapılandırmasında da). Ben .NET Bellek Profilcinin kullanarak Uygulamamı debug ve bu sonucu almak var:Emgu CV - bellek sızıntıları (bellek tüketimi)

http://img532.imageshack.us/img532/2503/screenqv.png

tüm örnek sayımı oscilating ama benim makine kullanılamaz olana kadar GChandle örneği counr artmaktadır nesneleri. Çöp toplayıcı hafızayı serbest bırakmaz (sanırım).

VS 2008 profesyonel, Win7 prof 32-bit'i, hem güncel hem de emguCV'nin son kararlı sürümünü kullanıyorum.

Yardım ederse, bazı uygulama kodunu gönderebilirim.

İngilizcem için teşekkürler ve özür dilerim. Martin

+1

OpenCV çok kötü olduğunu. Büyük ihtimalle bertaraf edilmesi gereken bir şeyi bertaraf etmediğinizi söyleyebilirim. Biraz kod yaz ve belki hatayı bulabiliriz. – ubiquibacon

cevap

1

Otomatik Çöp Toplama işleminin nasıl yapılacağına aşağıdaki bağlantıya bakınız.
http://www.emgu.com/wiki/index.php/Working_with_Images
Benzer bir sorunla karşılaştım ve yukarıdaki bağlantıdaki farklı yönergeleri kullanarak kodumu geliştirmeye başladım. o nesnelerin elden geldiğinde
Selamlar
Shivam

+0

Eh çok şey söylemiyor. Sadece el ile (örneğin '' 'ile) elden çıkarmanız ya da GC'yi beklemeniz gerekir. Ve bu İmha etme daha iyidir. – CodesInChaos

+0

Teşekkürler, bu açık bir cevaptır. Görüntü Yakalama bir saatten fazla 100ms ... Teşekkürler. –

0
public static class IImageExtensions 
{ 
    // http://stackoverflow.com/questions/20825497/difference-between-using-and-dispose-call-in-c-sharp 
    public static void FreeMem(this IImage image) 
    { 
     using (image) 
     { 
      using (image.Bitmap) 
      { 

      } 
     } 
     //image.Bitmap.Dispose(); 
     //image.Dispose(); 
    } 
} 
İlgili konular