Middle
Кайда жыйноочу эмне жана ал кандай иштейт?
sobes.tech AI
AIден жооп
Чоңурак чогултуучу (Garbage Collector, GC) — бул автоматтык эс тутумду башкаруу механизми, ал программадан колдонулбай калган эс тутумду бөлүп, бошотуп турат.
Иштөө принциби:
- Эс тутумду бөлүү: Программа объекттерди түзгөндө, чоңурак чогултуучу алар үчүн орун бөлөт.
- Жеткиликтүүлүктү аныктоо: Чоңурак чогултуучу, кайсы объекттер "тамырлар" (root) аркылуу жеткиликтүү экенин аныктайт. Тамырлар — иштеп жаткан функциялардын жергиликтүү өзгөрмөлөрү, статикалык өзгөрмөлөр, жиптерден (threads) келген шилтемелер жана башка.
- Чогултуу: Тамырлардан жеткиликтүү эмес объекттер "кыймылсыз" деп эсептелет жана алардын эс тутуму бошотулушу мүмкүн.
Төрт түрдүү алгоритмдер бар, мисалы:
- Mark-and-Sweep (Белгилөө жана тазалоо): Чогултуучу, тамырлардан жеткиликтүү объекттердин графин өтүп, белгилейт. Андан соң, бүтүндөй heap аркылуу өтүп, белгиленген объекттердин эс тутумун бошотот.
- Көчүрүү: Heap эки бөлүккө бөлүнөт. Жеткиликтүү объекттер бир бөлүктөн экинчи бөлүккө көчүрүлөт, эски бөлүк тазаланады.
- Генерациялык: Объекттер генерацияларга бөлүнөт. Жаңы объекттер жаш генерацияга, эскилер — жетилгенге киргизилет. Чогултуу көбүнчө жаш генерацияда болот, анткени көпчүлүк объекттер кыска өмүрлүү.
Javaда иштөө мисалы (жөнөкөйлөштүрүлгөн):
// Программа объекттерди heapте түзөт
Object obj1 = new Object();
Object obj2 = new Object();
// obj1 жеткиликтүү эмес болот
obj1 = null;
// Чогултуучу, obj1 тарабынан колдонулган эс тутумду бошотушу мүмкүн