Sobes.tech
Junior

Šta je sakupljač smeća (Garbage Collector) u C#?

sobes.tech АИ

Одговор од АИ

Механизам аутоматског управљања меморијом који ослобађа меморију која је заузета од стране објеката на које више нема референци. Ово спречава цурење меморије и поједностављује процес развоја.

Принципи рада сакупљача смећа:

  1. Праћење објеката: Одређује објекте који су још увек доступни из коренских чворова (статичка поља, локалне променљиве на стеку).
  2. Сакупљање смећа: Ако на објекат нема референци, сакупљач смећа га означава за уклањање.
  3. Ослобађање меморије: Ослобађа меморију коју заузимају уклоњени објекти и стисне преосталу меморију ради смањења фрагментације.

Поколења објеката:

  • Поколе 0: Садржи недавно креиране, краткотрајне објекте. Сакупљање се често одвија.
  • Поколе 1: Садржи објекте који су преживели сакупљање поколена 0. Сакупљање се одвија ређе.
  • Поколе 2: Садржи дуготрајне објекте. Сакупљање се ретко одвија.

Принудни позив GC (ретко се користи и са опрезом):

// Принудни позив сакупљања смећа
System.GC.Collect();
// Чекање на завршетак финализатора
System.GC.WaitForPendingFinalizers();

Главни механизам сакупљања смећа у .NET-у је алгоритам означавања и компресије.