Evet, gc sabit zaman itfa edilmektedir. Diyelim ki için çalışan ve k boyutunda bir pik çalışma kümesiyle çalışan bir algoritmaya sahipsin . Şimdi, programın çalışması sırasında en fazla O ( n ) kelimesi tahsis edebileceğinizi ve bir kopya toplayıcı çalıştırmanın zaman maliyetinin O ( k ) olduğunu unutmayın (yani, bir gc'nin maliyeti toplamla orantılıdır). canlı veri miktarı). Bu nedenle, gc'yi en fazla O ( n / k ) defa çalıştırırsanız, toplam çalışma zamanı maliyeti O ( n ) ile sınırlandırılır.nkO(n)O(k)O(n/k)O(n)bu, gc'nin itfa edilmiş maliyetinin sabit olduğu anlamına gelir. Bu nedenle, Cheney tarzı bir koleksiyoncunuz varsa, her yarı bölmenin boyutu , o zaman tam bir koleksiyonun her n / k adımda bir defadan fazla kullanılamayacağını görmek kolaydır , çünkü k kelimelerini ayırmak O ( k ) olur. zaman ve çalışma seti asla istediğiniz büyüklüğü veren k boyutunu geçemez . Bu, gc sorunlarını yok saymayı haklı kılar.2kn/kkO(k)k
Bununla birlikte, gc varlığının veya yokluğunun göz ardı edilemez olduğu bir durum kilitsiz veri yapıları yazmaktır. Birçok modern kilitlenmemiş veri yapısı kasıtlı olarak bellek sızdırıyor ve doğruluk için gc'ye güveniyor. Bunun nedeni, yüksek düzeyde, çalışma şeklinin, bazı verileri kopyalamak, üzerinde bir değişiklik yapmak ve bunu bir CAS komutuyla atomik olarak güncellemeye çalışmak ve bunu CAS başarılı olana kadar bir döngüde çalıştırmaktır. Bu algoritmalara deterministik deallocation eklemek, onları çok daha karmaşık hale getirir ve bu yüzden insanlar sık sık rahatsız olmaz (özellikle Java benzeri ortamlarda hedeflendiklerinden).
EDIT: Eğer itfa edilmemiş sınırlar istiyorsanız, Cheney toplayıcısı bunu yapmayacaktır - her çalıştırıldığında tüm canlı setini tarar. Google için anahtar kelime "gerçek zamanlı çöp toplama" ve Djikstra ve ark. Steele ilk gerçek zamanlı işaretleme ve toplama koleksiyonerlerini verdi ve Baker ilk gerçek zamanlı sıkıştırma gc'sini verdi.
@ makale {dijkstra1978fly,
title = {{Anında çöp toplama: İşbirliği içinde bir egzersiz}},
yazar = {Dijkstra, EW ve Lamport, L. ve Martin, AJ ve Scholten, CS ve Steffens, EFM},
dergi = {ACM'nin İletişimi},
hacim = {21},
Sayısı = {11},
sayfalar = {966--975},
ISSN = {0001-0782},
yıl = {1978},
yayımcı = {ACM}
}
@ makale {steele1975multiprocessing,
title = {{Çok işlemcili küçükleştirici çöp toplama}},
yazar = {Steele Jr, GL},
dergi = {ACM'nin İletişimi},
hacim = {18},
Sayısı = {9},
sayfalar = {495--508},
ISSN = {0001-0782},
yıl = {1975},
yayımcı = {ACM}
}
@ makale {baker1978list,
title = {{Seri bilgisayarda gerçek zamanlı olarak listeleme işlemi}},
yazar = {Baker Jr, HG},
dergi = {ACM'nin İletişimi},
hacim = {21},
Sayısı = {4},
sayfalar = {280--294},
ISSN = {0001-0782},
yıl = {1978},
yayımcı = {ACM}
}