Middle+
Dart'ta çöp toplayıcısının hangi özellikleri vardır?
sobes.tech yapay zeka
AI'dan gelen yanıt
Dart'taki çöp toplayıcı, Jenerasyonel Çöp Toplama (Generational Garbage Collection) algoritmasını kullanır.
Ana özellikler:
- Jenerasyonlar: Nesneler iki jenerasyona ayrılır:
- Genç Jenerasyon: Burada yeni nesneler oluşturulur. Bu jenerasyonda çöp toplama daha hızlı ve daha sık gerçekleşir, çünkü çoğu nesne oluşturulduktan kısa süre sonra ölür.
- Yaşlı Jenerasyon: Birkaç genç jenerasyon çöp toplama döngüsünden sonra hayatta kalan nesneler buraya taşınır. Bu jenerasyonda çöp toplama daha az sıklıkta ve daha uzun sürer.
- Hayatta kalanlar: Genç jenerasyondaki, diğer nesnelerin referans verdiği nesneler "hayatta kalan" olarak kabul edilir ve yaşlı jenerasyona taşınabilir.
- Çöp toplama aşamaları:
- Küçük Çöp Toplama (Minor GC): Sadece genç jenerasyondaki nesneleri etkileyen hızlı çöp toplama.
- Büyük Çöp Toplama (Major GC): Daha uzun süren ve yaşlı jenerasyondaki nesneleri kontrol eden çöp toplama.
- Jenerasyonel çöp toplamanın avantajları:
- Kısa ömürlü nesneler için optimize edilmiştir: Çoğu çöp, genç jenerasyondan hızla kaldırılır.
- Duraklama sürelerini azaltır: Genç jenerasyon için sık, kısa duraklamalar, tüm yığın için nadir ama uzun duraklamalardan daha az fark edilir.
- Dart VM çöp toplayıcı:
- Kopyalama (copying collector) ve işaretleme ve sıkıştırma (mark-and-sweep/compact) yöntemlerini birleştiren hibrit bir yaklaşım kullanır.
- Genç jenerasyondaki kopyalama toplayıcı, canlı nesneleri hızla başka bir bellek alanına taşır ve mevcut alanı verimli şekilde serbest bırakır.
- Yaşlı jenerasyonda işaretleme ve sıkıştırma, canlı nesneleri bulur ve onları hareket ettirerek bellek parçalanmasını giderir.
- Kullanıcı arayüzü iş parçacıklarından bağımsız çalışır, kilitlenmeleri en aza indirir.
// Genç jenerasyona yerleştirilecek nesnelerin oluşturulmasına örnek
class MyClass {
String name;
MyClass(this.name);
}
void main() {
var obj1 = MyClass("Nesne 1"); // Genç jenerasyonda oluşturulur
var obj2 = MyClass("Nesne 2"); // Genç jenerasyonda oluşturulur
// Nesneler referanslar tarafından tutulmuyorsa, toplanabilirler
// bir sonraki genç jenerasyon çöp toplamasında.
// Bu nesneler uzun süre yaşar ve referanslara sahipse,
// yaşlı jenerasyona taşınabilirler.
}