2010-05-16 7 views
6

.NET 용 OpenCV 래퍼 EmguCV를 사용하고 있습니다. 나는 모든 생성 된 객체를 삭제하지만 내 앱은 여전히 ​​더 많은 메모리를 사용하고 있습니다 (릴리스 구성에서도). 나는 .NET 메모리 프로파일 러를 사용하여 내 응용 프로그램을 디버깅하고이 결과를 얻을 수있다 :Emgu CV - memory-leaks (메모리 소비)

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

모든 인스턴스 수가 oscilating되지만 내 컴퓨터를 사용할 수 없게 될 때까지 GChandle 인스턴스 counr가 증가하고 객체. 가비지 수집기가 메모리를 해제하지 않습니다 (제 생각 엔).

저는 VS 2008 Professional, Win7 Prof 32 비트, 최신 버전 및 최신 안정 버전의 emguCV를 사용하고 있습니다.

도움이 될만한 앱 코드를 게시 할 수 있습니다.

내 영어를 사용해 주셔서 감사합니다. Martin

+1

OpenCV의 매우 불쾌한입니다. 나는 당신이 처분해야하는 무언가를 처분하지 않을 가능성이 가장 높다고 말할 것입니다. 몇 가지 코드를 입력하면 오류를 찾을 수 있습니다. – ubiquibacon

답변

1

자동 가비지 수집을 수행하는 방법에 대한 링크를 아래에서보십시오.
http://www.emgu.com/wiki/index.php/Working_with_Images
나는 비슷한 문제가 있었고 위의 링크에 대한 다른 지침을 사용하여 코드를 개선하기 시작했습니다. 이 객체의 처분에 관해서
감사
Shivam

+0

글쎄 그것은별로 말하지 않습니다. 오직 수동으로 (예를 들어'using'으로) 처분하거나 GC를 기다릴 필요가 있습니다. 그리고 Disposing이 더 좋습니다. – CodesInChaos

+0

감사합니다. 분명한 답변입니다. 시간당 100ms의 이미지 캡처 ... 감사합니다. –

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(); 
    } 
} 
관련 문제