Sobes.tech
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:

  1. 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.
  2. 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.
  3. 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ə