Ya, gc adalah waktu konstan diamortisasi. Misalkan Anda memiliki algoritma yang berjalan untuk waktu dengan set kerja puncak ukuran k . Sekarang, perhatikan bahwa Anda dapat mengalokasikan paling banyak O ( n ) kata selama pelaksanaan program, dan bahwa biaya waktu menjalankan pengumpul sampah adalah O ( k ) (yaitu, biaya gc sebanding dengan total jumlah data langsung). Jadi jika Anda menjalankan gc paling banyak O ( n / k ) kali, maka total biaya runtime dibatasi oleh O ( n )nkO ( n )O ( k )O ( n / k )O ( n ), yang berarti bahwa biaya perolehan diamortisasi dari gc adalah konstan. Jadi jika Anda memiliki kolektor gaya Cheney, dengan masing-masing ruang semisal berukuran , maka mudah untuk melihat bahwa koleksi lengkap tidak dapat dipanggil lebih dari sekali setiap langkah n / k , karena mengalokasikan kata k membutuhkan O ( k ) waktu, dan set kerja tidak pernah melebihi ukuran k , yang memberi Anda batas yang Anda inginkan. Ini membenarkan mengabaikan masalah gc.2 kn / kkO ( k )k
Namun, satu kasus di mana ada atau tidak adanya gc tidak diabaikan adalah ketika menulis struktur data bebas kunci. Banyak struktur data bebas kunci modern dengan sengaja membocorkan memori dan mengandalkan gc untuk mendapatkan kebenaran. Ini karena pada level tinggi, cara mereka bekerja adalah menyalin beberapa data, mengubahnya, dan mencoba memperbaruinya secara atomis dengan instruksi CAS, dan menjalankannya dalam satu lingkaran sampai CAS berhasil. Menambahkan deinokasi deterministik ke algoritma ini membuatnya jauh lebih kompleks, sehingga orang sering tidak repot (terutama karena mereka sering ditargetkan pada lingkungan seperti Java).
EDIT: Jika Anda ingin batas yang tidak diamortisasi, kolektor Cheney tidak akan melakukannya - pemindaian seluruh set langsung setiap kali dipanggil. Kata kunci untuk google adalah "pengumpulan sampah waktu nyata", dan Djikstra et al. dan Steele memberikan kolektor tanda dan sapuan waktu nyata pertama, dan Baker memberikan waktu pemadatan gc yang nyata.
@artikel {dijkstra1978fly,
title = {{Pengumpulan sampah sambil jalan: Latihan bersama}},
author = {Dijkstra, EW dan Lamport, L. dan Martin, AJ dan Scholten, CS and Steffens, EFM},
jurnal = {Komunikasi ACM},
volume = {21},
number = {11},
halaman = {966--975},
issn = {0001-0782},
tahun = {1978},
publisher = {ACM}
}
@artikel {steele1975multiproses,
title = {{Mengolah pengumpulan sampah pemadatan}},
author = {Steele Jr, GL},
jurnal = {Komunikasi ACM},
volume = {18},
number = {9},
halaman = {495--508},
issn = {0001-0782},
tahun = {1975},
publisher = {ACM}
}
@article {baker1978list,
title = {{Daftar memproses secara real time di komputer serial}},
author = {Baker Jr, HG},
jurnal = {Komunikasi ACM},
volume = {21},
number = {4},
halaman = {280--294},
issn = {0001-0782},
tahun = {1978},
publisher = {ACM}
}