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?
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.