Middle
Heap-də yaddaşın üç nəsil üzrə bölünməsi niyə vacibdir?
sobes.tech Süni İntellekt
AI-dan cavab
Tullantıların toplanmasını (Garbage Collection) optimallaşdırmaq üçün. Bu, əksər obyektlərin qısa ömrü olduğunu ehtimal edir.
Nəsil:
- 0-cil nəsil (Gənc Nəsil): Əksər yeni obyektləri saxlayır. Tullantıların toplanması tez-tez, lakin sürətli olur, çünki kiçik bir sahə işlənir. Sağ qalan obyektlər 1-ci nəsilə köçürülür.
- 1-ci nəsil (Aralıq Nəsil): 0-cı nəsildə sağ qalan obyektləri ehtiva edir. Tullantıların toplanması 0-cı nəsildən daha az olur. Sağ qalan obyektlər 2-ci nəsilə köçürülür.
- 2-ci nəsil (Köhnə Nəsil): Uzunömürlü obyektləri ehtiva edir. Tullantıların toplanması ən nadir və ən çox resurs tələb edən ola bilər, çünki tam skan və yaddaş sıxışdırma tələb edir.
Üstünlüklər:
- Müddət dayanmalarını azaltmaq: Gənc nəsillərdə tullantıların toplanması daha tez baş verir, lakin daha az vaxt alır, bu da tətbiqin işləməsində gecikmələri minimuma endirir.
- Yaddaşın səmərəli istifadəsi: Qısa ömürlü obyektlər tezliklə silinir, yer boşaldılır.
- İş yükünü azaltmaq: Tullantı toplayıcı hər dövrədə bütün yığını yoxlamalı deyil.
// 0-cı nəsildə obyektlərin yaradılması nümunəsi
object obj1 = new object();
object obj2 = new object();
// Sonrakı istifadə onların növbəti nəsillərə köçürülməsinə səbəb ola bilər
// ömür müddətinə görə