2010-05-16 16 views
6

Ich benutze EmguCV, der OpenCV Wrapper für .NET. Ich entsorge alle erstellten Objekte, aber meine App verwendet immer noch mehr Speicher (in Release-Konfiguration auch). Ich habe meine app .NET Memory Profiler debuggt und dieses Ergebnis:Emgu CV - Speicherlecks (Speicherverbrauch)

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

alle Objekte Beispiel Zählung schwank aber GCHandle Instanz counr steigt, bis meine Maschine unbrauchbar ist. Garbage Collector gibt keinen Speicher frei (denke ich).

Ich benutze VS 2008 Professional, Win7 prof 32-Bit, beide aktuelle und letzte stabile Version von emguCV.

Ich kann einige App-Code, wenn es helfen wird.

Danke und Entschuldigung für mein Englisch. Martin

+1

OpenCV ist sehr böse, wenn es um die Entsorgung von Gegenständen kommt. Ich würde sagen, dass Sie höchstwahrscheinlich nicht über etwas verfügen, das entsorgt werden sollte. Legen Sie etwas Code und vielleicht können wir Ihren Fehler finden. – ubiquibacon

Antwort

1

Werfen Sie einen Blick auf den unten stehenden Link, um automatische Müllsammlung zu machen.
Ich hatte ein ähnliches Problem und ich begann, meinen Code mit den verschiedenen Richtlinien auf den obigen Link zu verbessern.
Grüße
Shivam

+0

Nun, es sagt nicht viel. Nur dass Sie entweder manuell disponieren müssen (zum Beispiel mit 'using') oder auf den GC warten müssen. Und diese Disposition ist besser. – CodesInChaos

+0

Danke, es ist eine offensichtliche Antwort. Bilderfassung bei 100ms über eine Stunde ... Danke. –

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