2010-05-16 169 views
6

我正在使用EmguCV,.NET的OpenCV包裝。我正在處置所有創建的對象,但我的應用程序仍在使用越來越多的內存(也在發佈配置中)。我一直在使用.NET存儲器剖析調試我的應用程序,並得到這樣的結果:Emgu CV - 內存泄漏(內存消耗)

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

所有對象實例計數oscilating但例如的GCHandle是counr增加,直到我的機器是不可用的。垃圾收集器不釋放內存(我認爲)。

我使用VS 2008 professional,Win7 prof 32位,都是最新的,以及最後一個穩定版本的emguCV。

我可以發佈一些應用程序代碼,如果它會幫助。

非常感謝我的英語。 馬丁

+1

的OpenCV是非常討厭的,當涉及到的對象的處置。我想說你最有可能不會處置應該處置的東西。提出一些代碼,也許我們可以找到你的錯誤。 – ubiquibacon 2010-05-16 23:11:58

回答

1

看看下面的鏈接如何做自動垃圾收集。
http://www.emgu.com/wiki/index.php/Working_with_Images
我有一個類似的問題,我開始改善我的代碼,使用上面的鏈接不同的指導方針。
問候
Shivam

+0

那麼它不會說太多。只有你需要手動處理(例如使用'')或等待GC。而且處置更好。 – CodesInChaos 2011-02-21 11:26:52

+0

謝謝,這是一個明顯的答案。在一個小時內100ms的圖像捕捉...謝謝。 – 2013-09-05 07:13:42

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(); 
    } 
}