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() шақырылады, басқарылмайтын ресурс тазаланады