Cześć. Uruchamiam aplikację. Na początku w pamięci zajmuje 12 MB z hakiem. Otwieram pewne okno. Pamięć wzrasta do 74 MB. Zamykam okno, a w form_closing usuwam wszystkie obiekty zadeklarowane globalnie w tym oknie w następujący sposób:
obiekt.Dispose();
obiekt = null
Oczywiście nie wszstkie obiekty posiadają Dispose(np. DispatcherTimer). Rozumiem, że wtedy nie muszę się o nie martwić? Na koniec dodatkowo wykonuję GC.Collect().
O dziwo tak naprawdę tylko zwolnienie dwóch obiektów(Emgu capture i Emgu haarCascade) powoduje widoczne zmniejszenie pamięci. W każdym razie po zamknięciu tego okna, aplikacja zajmuje ponad 50 MB!
Co ciekawe, jeśli drugi raz otworzę to okno, aplikacja zajmuje już ponad 80 MB i z sekundy na sekundę rośnie.
Wszystkie lokalne obiekty tworzę za pomocą using, tzn:
using(ob = new Obiekt())
{
//operacje
}
O co tu chodzi?