Mam kilka pytań na temat GC i uwalniania pamieci.
- Czy wykonanie poniższego kodu rzeczywiście spowoduje bezwzględne uruchomienie GC? W Javie wiem, że nie da się uruchomić GC, tylko można zasugerować jego uruchomienie, a to jest kolosalna różnica.
System.GC.Collect(System.GC.MaxGeneration, System.GCCollectionMode.Forced);
-
Czy praca GC powoduje wstrzymanie działania programu tak, jak ma to miejsce w Javie?
-
Jeżeli klasa implementuje interfejs IDisposable, to musi posiadać metodę Dispose.
Czy jeżeli stworzymy obiekt z wykorzystaniem "using" to po zakończeniu using obiekt istnieje, aż zmiecie go GC, czy jest usuwany od razu? Czy wtedy destruktor się też uruchomi, czy uruchomi się metoda Dispose? -
Czy jest możliwe wymuszenie uwolnienia pamięci zajmowanej przez obiekt podobnie, jak to robi "delete" w c++? Czy jedynym sposobem jest zgubienie referencji i uruchomienie GC?