Sobes.tech
Middle

Дартиро ҷамъоварии партовҳо дар чӣ гуна медонӣ?

sobes.tech AI

Ҷавоб аз AI

Дарт аз истифода мебарад, якчанд сӯрохи якхела, ки асосан ба ҷамъоварии зумра (generational garbage collection) асос ёфтааст.

Хусусиятҳои асосӣ:

  • Ҷамъоварии зумра: Объектҳо ба ду зумра тақсим мешаванд:
    • Зумраи ҷавон: Объектҳои нав ва кӯтоҳмуддат. Бисёр вақт ҷамъоварӣ мешаванд.
    • Зумраи кӯҳна: Объектҳои дарозмуддат, ки чанд ҷамъовариро дар зумраи ҷавон гузаштаанд. Камтар ҷамъоварӣ мешаванд.
  • Stop-the-World: Барои иҷрои ҷамъоварии зумра, лозим аст, ки иҷрои барнома (Dart Isolates) боздошта шавад. Аммо, бо сабаби ягона ва оптимизатсияҳо, таъхирҳо кам мешаванд.
  • Mark-and-Sweep: Дар зумраи кӯҳна, алгоритми Mark-and-Sweep истифода мешавад. Аввал, объектҳои дастрасро нишон медиҳанд, баъд, онҳое, ки дастрас нестанд, тоза мешаванд. Барои зумраи ҷавон, алгоритми Copying Collector истифода мешавад, ки объектҳои зиндаро ба дигар ҷойи хотира зуд мегузаронад.
  • Ҳеҷ гуна даврҳои ҷамъоварӣ: Тарафдори барнома бояд хотираро дастӣ идора накунад ё GC-ро даъват накунад. Система инро автоматӣ мекунад.
  • Оптимизатсияҳо: Инҳоянд inline кардани функсияҳо, махсусгардонии намудҳо ва тақсимоти объектҳо дар стек, ки борро ба ҷамъоварии зумра кам мекунад.

Масалан, ҳангоми сохтани объект нав:

// Сохтани объект нав дар "зумраи ҷавон"-и хотира
var myObject = MyClass();

Агар myObject дар хотира дарозмуддат боқӣ монад ва дастрас бошад, бо вақт ба "зумраи кӯҳна" интиқол дода мешавад. Агар он дастрасӣ надошта бошад, ҷамъоварии зумра онро дар охир озод мекунад.

// myObject акнун дастрас нест, метавонад аз ҷониби ҷамъоварии зумра ҷамъоварӣ шавад
myObject = null;

Муҳим аст, ки фаҳмем, ки ҷамъоварии зумра дар Dart самаранок аст, аммо на ҳама корро мекунад барои пешгирии дардҳои хотира, ки метавонанд бо нигоҳ доштани истинодҳои қавӣ ба объектҳое, ки дигар заруранд, ба вуҷуд оянд (масалан, обунаҳои бекорнашуда).