Junior
Šta je sakupljač smeća (Garbage Collector) u C#?
sobes.tech АИ
Одговор од АИ
Механизам аутоматског управљања меморијом који ослобађа меморију која је заузета од стране објеката на које више нема референци. Ово спречава цурење меморије и поједностављује процес развоја.
Принципи рада сакупљача смећа:
- Праћење објеката: Одређује објекте који су још увек доступни из коренских чворова (статичка поља, локалне променљиве на стеку).
- Сакупљање смећа: Ако на објекат нема референци, сакупљач смећа га означава за уклањање.
- Ослобађање меморије: Ослобађа меморију коју заузимају уклоњени објекти и стисне преосталу меморију ради смањења фрагментације.
Поколења објеката:
- Поколе 0: Садржи недавно креиране, краткотрајне објекте. Сакупљање се често одвија.
- Поколе 1: Садржи објекте који су преживели сакупљање поколена 0. Сакупљање се одвија ређе.
- Поколе 2: Садржи дуготрајне објекте. Сакупљање се ретко одвија.
Принудни позив GC (ретко се користи и са опрезом):
// Принудни позив сакупљања смећа
System.GC.Collect();
// Чекање на завршетак финализатора
System.GC.WaitForPendingFinalizers();
Главни механизам сакупљања смећа у .NET-у је алгоритам означавања и компресије.