.NET

Memory Management & GC

Garbage Collection, generazioni, finalizzazione, IDisposable, using statement, memory leak, profiling

22 domande da colloquio·
Senior
1

Cos'è il Garbage Collector (GC) in .NET?

Risposta

Il Garbage Collector è un meccanismo automatico di gestione della memoria che libera gli oggetti non utilizzati sul managed heap. Viene eseguito automaticamente in background per prevenire i memory leak, a differenza di C/C++ dove la memoria deve essere liberata manualmente. Il GC analizza i riferimenti agli oggetti e raccoglie quelli che non sono più accessibili dalle roots dell'applicazione.

2

Quali sono le tre generazioni del Garbage Collector in .NET?

Risposta

Il GC di .NET utilizza tre generazioni: Gen0 (oggetti giovani e di breve durata, raccolti frequentemente), Gen1 (oggetti di durata media, zona cuscinetto tra Gen0 e Gen2) e Gen2 (oggetti di lunga durata, raccolti raramente perché costoso). Questo sistema generazionale ottimizza le prestazioni raccogliendo prima gli oggetti effimeri (Gen0), che rappresentano l'80-90% degli oggetti, evitando di scansionare frequentemente gli oggetti persistenti (Gen2).

3

Cos'è il Large Object Heap (LOH) in .NET?

Risposta

Il Large Object Heap è uno spazio di memoria separato per oggetti di 85 KB o più, che appartiene logicamente alla Gen2. A differenza dell'heap standard, che viene compattato regolarmente, il LOH NON viene compattato per impostazione predefinita per evitare il costo di copiare oggetti di grandi dimensioni. Questo può causare frammentazione della memoria. Dal .NET 4.5.1, la compattazione del LOH può essere abilitata manualmente con GCSettings.LargeObjectHeapCompactionMode.

4

Qual è il ruolo del pattern IDisposable in .NET?

5

Cosa fa l'istruzione using in C#?

+19 domande da colloquio

Padroneggia .NET per il tuo prossimo colloquio

Accedi a tutte le domande, flashcards, test tecnici, esercizi di code review e simulatori di colloquio.

Inizia gratis