Middle+
Dart-də tullantı toplayıcısının hansı xüsusiyyətləri var?
sobes.tech Süni İntellekt
AI-dan cavab
Dart-də çöp toplayıcı Nəsil Çöp Toplama (Generational Garbage Collection) alqoritmində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) və 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 obyektlər uzun müddət yaşayırsa və onlara referanslar varsa,
// onlar köhnə nəsilə köçürülə bilər.
}