Sobes.tech
Middle

Nima uchun xotira bo'lagi uch avlodga bo'linishi kerak?

sobes.tech AI

AIdan javob

Qayta ishlashni optimallashtirish uchun (Garbage Collection). Bu, ko'p ob'ektlarning qisqa umrga ega ekanligi gipotezasiga asoslangan.

Avlodlar:

  1. 0-avlod (Yosh Avlod): Ko'p yangi ob'ektlarni saqlaydi. Qayta ishlash tez-tez, ammo tez, chunki kichik joyni ishlaydi. Qolgan ob'ektlar 1-avlodga o'tkaziladi.
  2. 1-avlod (Oraliq Avlod): 0-avlodda qolgan ob'ektlarni o'z ichiga oladi. Qayta ishlash 0-avlodga qaraganda kamroq. Qolgan ob'ektlar 2-avlodga o'tkaziladi.
  3. 2-avlod (Eski Avlod): Uzun umrli ob'ektlarni saqlaydi. Qayta ishlash eng kam va eng ko'p resurs talab qilishi mumkin, chunki to'liq skanerlash va xotira siqishni talab qiladi.

Afzalliklar:

  • To'xtash vaqtini qisqartirish: Yosh avlodlaridagi qayta ishlash ko'proq, lekin kamroq vaqt oladi, bu esa dastur ishida kechikishlarni minimallashtiradi.
  • Xotira samarali ishlatilishi: Qisqa umrli ob'ektlar tezda o'chiriladi, joy bo'shatiladi.
  • Ish hajmini kamaytirish: Qayta yig'uvchi har safar butun yiginni tekshirmasligi mumkin.
// 0-avlodda ob'ektlar yaratish misoli
object obj1 = new object();
object obj2 = new object();

// Keyingi foydalanish ularni keyingi avlodlarga o'tkazishga olib kelishi mumkin
// umr davomiga qarab