[VB.NET] Oczyszczanie pamięci po zamknięciu okna

Witam

Czytałem trochę o GC ale nie mogę sobie poradzić z całkowitym powrotem zużywanego ramu do stanu przed otworzenia okna. Używałem funkcji Dispose() i GC.Collect() ale poziom spadał jedynie o parę MB, a reszta zostawała. Dodatkowo po otwarciu tego samego okna zużycie znowu rosło, później tak samo, aż dochodziło do 300MB i w tedy pamięć schodziła do 150.

Jak prawidłowo powinien wyglądać kod do zamykania formy i zwalniania WSZYSTKICH użytych zasobów? 

Z góry dziękuję za pomoc 

Najlepszą praktyką w używaniu metody GC.Collect() jest jej nieużywanie. Nieumiejętne wykorzystanie może doprowadzić do defragmentacji pamięci, problemów wydajnościowych itp. itd. CLR sam zadba o to, aby w odpowiednim czasie wyczyścić nieużywaną pamięć. Wystarczy, że będziesz pozbywał się niepotrzebnych obiektów i w prawidłowy sposób używał using + IDisposable. 

Z tego co opisujesz GC działa poprawnie w tym przypadku. Nie jest tak, że pamięć jest czyszczona natychmiastowo przez GC. Warto poczytać jak działa GC, w sieci jest tego sporo: http://programmers.stackexchange.com/questions/276585/when-is-it-a-good-idea-to-force-garbage-collection