Sobes.tech
Junior — Middle

Чӣ гуна ҷамъоварии автоматии партовҳо дар забонҳои барномасозии идорашаванда сурат мегирад?

sobes.tech AI

Ҷавоб аз AI

Автоматии ҷамъоварии партов (Garbage Collection, GC) дар забонҳои идорашаванда, мисли C#, тавассути механизми махсус амалӣ мешавад, ки объектҳоро дар ёддошт пайгирӣ мекунад ва онҳоро озод мекунад, ки ба онҳо дигар ҳеҷ гуна истинод вуҷуд надорад.

Принсипҳои асосии GC:

  • Пайгирии истинодҳо: GC муайян мекунад, ки кадом объектҳо аз истинодҳои реша (масалан, тағйирёбандаҳои маҳаллӣ, майдонҳои статикӣ) дастрасанд.
  • Шенасоии объектҳои дастраснашаванда: Объектҳое, ки истинод надоранд, ҳамчун партов ҳисоб мешаванд.
  • Озод кардани ёддошт: GC ёддоштро, ки объектҳои дастраснашаванда ишғол мекунанд, озод мекунад.
  • Наслҳо: Барои оптимизатсияи ҷамъоварии партовҳо, он ба наслҳо (Gen 0, Gen 1, Gen 2) тақсим мешавад, ки имкон медиҳад, ки объектҳои ҷавонтар бештар ва объектҳои дарозмуддат камтар ҷамъоварӣ шаванд.

Масалан дар C#:

class Program
{
    static void Main()
    {
        var obj = new object();
        // истифодаи объект
        obj = null; // объект дастраснашаванда мешавад
        GC.Collect(); // даъвати маҷбурии ҷамъкунандаи партовҳо (кам истифода мешавад дар барномаҳои воқеӣ)
    }
}

Бо ин роҳ, барномасоз аз идоракунии дастӣ ёддошт озод мешавад, ки хатогиҳои вобаста ба дарзмолшавии ёддоштро кам мекунад.