Sobes.tech
Middle+

Dart'da axirgi yig'uvchi qanday xususiyatlarga ega?

sobes.tech AI

AIdan javob

Dart'da çöp toplayıcı Nəsilli Çöp Toplama (Generational Garbage Collection) algoritmindən istifadə edir.

Əsas xüsusiyyətlər:

  • Nəsillər: Obektlər iki nəsilə bölünür:
    • Gənc Nəsil: Burada yeni obektlər yaradılır. Bu nəsildə toplanma daha sürətli və daha tez-tez baş verir, çünki çox obyektdən çoxu yaradıldıqdan sonra ölür.
    • Köhnə Nəsil: Bir neçə gənc nəsil toplanma dövründən sonra sağ qalan obektlər buraya köçürülür. Bu nəsildə toplanma daha az baş verir, amma daha çox vaxt alır.
  • Qalanlar: Gənc nəsildə digər obyektlərə istinad edən obyeklər "qalan" sayılır və köhnə nəsilə köçürülə bilər.
  • Toplama mərhələləri:
    • Kiçik GC: Yalnız gənc nəsildəki obyekləri əhatə edən sürətli toplanma.
    • Böyük GC: Daha uzun müddət çəkən və köhnə nəsildəki obyekləri yoxlayan toplanma.
  • Nəsilli toplanmanın üstünlükləri:
    • Qısa ömürlü obyektlər üçün optimallaşdırma: Çoxlu çöp sürətlə gənc nəsildən silinir.
    • Müddət fasilələrini azaldır: Gənc nəsil üçün tez-tez, qısa fasilələr, bütün yığışdırma üçün nadir və uzun fasilələrdən daha az nəzərə çarpır.
  • Dart VM çöp toplayıcısı:
    • Kopiyalama (copying collector)işarələmə və sıxma (mark-and-sweep/compact) metodlarını birləşdirən hibrid yanaşma istifadə edir.
    • Gənc nəsildə kopiyalama toplayıcısı, canlı obyekləri sürətlə başqa yaddaş sahəsinə köçürür və mövcud sahəni səmərəli şəkildə azad edir.
    • Köhnə nəsildə işarələmə və sıxma, canlı obyekləri tapır və onları hərəkət etdirir, yaddaş parçalanmasını aradan qaldırır.
    • İstifadəçi interfeysinin işçi axınlarından müstəqil işləyir, kilidləri minimuma endirir.
// Gənc nəsil üçün yerləşdiriləcək obyeklərin yaradılmasına nümunə
class MyClass {
  String name;
  MyClass(this.name);
}

void main() {
  var obj1 = MyClass("Obyekt 1"); // Gənc nəsildə yaradılır
  var obj2 = MyClass("Obyekt 2"); // Gənc nəsildə yaradılır

  // Əgər obyektlər referanslar tərəfindən saxlanmırsa, onlar toplanabilir
  // növbəti gənc nəsil toplanması zamanı.

  // Əgər bu obyektlər uzun müddət yaşayırsa və onlara referanslar varsa,
  // onlar köhnə nəsilə köçürülə bilər.
}