.NET

Memory Management & GC

Garbage Collection, generacje, finalizacja, IDisposable, instrukcja using, wycieki pamięci, profilowanie

22 pytań z rozmów·
Senior
1

Czym jest Garbage Collector (GC) w .NET?

Odpowiedź

Garbage Collector to automatyczny mechanizm zarządzania pamięcią, który zwalnia nieużywane obiekty na managed heap. Działa automatycznie w tle, aby zapobiegać wyciekom pamięci, w przeciwieństwie do C/C++, gdzie pamięć trzeba zwalniać ręcznie. GC analizuje referencje obiektów i zbiera te, które nie są już dostępne z roots aplikacji.

2

Jakie są trzy generacje Garbage Collectora w .NET?

Odpowiedź

GC .NET używa trzech generacji: Gen0 (młode, krótko żyjące obiekty, zbierane często), Gen1 (obiekty o średnim czasie życia, strefa buforowa między Gen0 a Gen2) oraz Gen2 (długo żyjące obiekty, zbierane rzadko, ponieważ jest to kosztowne). Ten system generacyjny optymalizuje wydajność, zbierając najpierw efemeryczne obiekty (Gen0) stanowiące 80-90% obiektów i unikając częstego skanowania trwałych obiektów (Gen2).

3

Czym jest Large Object Heap (LOH) w .NET?

Odpowiedź

Large Object Heap to oddzielna przestrzeń pamięci dla obiektów o rozmiarze 85 KB lub większych, logicznie należąca do Gen2. W przeciwieństwie do standardowego heapa, który jest regularnie kompaktowany, LOH domyślnie NIE jest kompaktowany, aby uniknąć kosztu kopiowania dużych obiektów. Może to powodować fragmentację pamięci. Od .NET 4.5.1 kompaktowanie LOH można włączyć ręcznie za pomocą GCSettings.LargeObjectHeapCompactionMode.

4

Jaka jest rola wzorca IDisposable w .NET?

5

Co robi instrukcja using w C#?

+19 pytań z rozmów

Opanuj .NET na następną rozmowę

Uzyskaj dostęp do wszystkich pytań, flashcards, testów technicznych, ćwiczeń code review i symulatorów rozmów.

Zacznij za darmo