Sobes.tech
Junior

Чӣ тавр ҷамъоварии партовҳо дар C#?

sobes.tech AI

Ҷавоб аз AI

C#-да қоқыс жыйнағыш — бұл автоматтандырылған жадты басқару процесі. Ол қолданбаға енді қажеті жоқ объектілердің иеленген жадыны босатады.

Негізгі аспектілер:

  • Автоматты басқару: Дамытушы көп объектілер үшін жадыны қолмен бөлу немесе босату қажет емес. CLR (Common Language Runtime) оны автоматты түрде жасайды.
  • Сілтемелерді бақылау: Қоқыс жыйнағыш, қай объектілердің түбір көздерден (мысалы, ағындар стегі, статикалық өрістер) қол жетімді екенін анықтайды. Бұл көздерден сілтемесі жоқ объектілер қол жетімсіз деп саналып, жиналады.
  • Ұрпақтар: Heap (қоқыс) 0, 1 және 2 ұрпақтарға бөлінген. Жинақтау соңында "өмір сүрген" объектілер жоғары ұрпақтарға ауысады. Бұл процесті оңтайландырады, себебі көп объектілер қысқа өмір сүреді.
  • Финализация: Объектілерде Finalize әдісі болуы мүмкін, оны қоқыс жыйнағыш жады босамас бұрын шақырады. Бұл басқарылмайтын ресурстарды тазалау үшін пайдаланылады, бірақ оның қолданылуы орындалу уақытының болжамсыздығы себебінен шектелген.
  • Компактизация: Жинақтау соңында, қоқыс жыйнағыш тірі объектілерді жылжыта алады, жадының фрагментациясын азайту үшін.
// Басқарылатын heap-те объект құру мысалы
MyClass obj = new MyClass();
// obj-ке енді сілтемелер болмаса, қоқыс жыйнағыш жадыны босата алады

// IDisposable және using көмегімен басқарылмайтын ресурстарды қолмен босату мысалы
// Finalize орнына ұсынылатын тәсіл
using (var resource = new UnmanagedResourceWrapper())
{
    // Ресурсты пайдалану
} // Мұнда resource.Dispose() шақырылады, басқарылмайтын ресурс тазаланады