ใช่ gc ถูกตัดจำหน่ายเวลาคงที่ สมมติว่าคุณมีอัลกอริทึมที่วิ่งเวลามียอดชุดทำงานขนาดk ตอนนี้โปรดทราบว่าคุณสามารถจัดสรรคำได้มากที่สุดO ( n )คำในระหว่างการทำงานของโปรแกรมและค่าใช้จ่ายเวลาในการเรียกใช้ตัวเก็บรวบรวมขยะที่คัดลอกคือO ( k ) (เช่นต้นทุนของ gc เป็นสัดส่วนกับผลรวมทั้งหมด จำนวนข้อมูลสด) ดังนั้นหากคุณรัน gc มากที่สุดO ( n / k )ครั้งดังนั้นต้นทุนรันไทม์ทั้งหมดจะถูก จำกัด ด้วยO ( n )nkO(n)O(k)O(n/k)O(n)ซึ่งหมายความว่าค่าตัดจำหน่ายของ gc คงที่ ดังนั้นหากคุณมีนักสะสมสไตล์ Cheney โดยแต่ละเซสเปซเป็นขนาดดังนั้นจึงเป็นเรื่องง่ายที่จะเห็นว่าคอลเลกชันเต็มไม่สามารถเรียกได้มากกว่าหนึ่งครั้งในทุก ๆขั้นตอนn / kเนื่องจากการจัดสรรkคำใช้O ( k )เวลาและชุดการทำงานไม่เคยเกินขนาดkซึ่งให้ขอบเขตที่คุณต้องการ นี่เป็นเหตุผลที่ละเว้นปัญหา gc2kn/kkO(k)k
อย่างไรก็ตามกรณีหนึ่งที่การมีหรือไม่มี gc ไม่สามารถทำได้คือเมื่อเขียนโครงสร้างข้อมูลที่ไม่ล็อค โครงสร้างข้อมูลปลอดล็อคที่ทันสมัยหลายหน่วยความจำรั่วโดยจงใจและพึ่งพา gc เพื่อความถูกต้อง นี่เป็นเพราะในระดับสูงวิธีการทำงานคือการคัดลอกข้อมูลทำการเปลี่ยนแปลงและลองอัปเดตอะตอมมิกด้วยคำสั่ง CAS และเรียกใช้สิ่งนี้ในลูปจนกว่า CAS จะประสบความสำเร็จ การเพิ่มการจัดสรรคืนที่กำหนดให้กับอัลกอริทึมเหล่านี้ทำให้พวกเขามีความซับซ้อนมากขึ้นและทำให้ผู้คนมักจะไม่ต้องกังวลใจ
แก้ไข: หากคุณต้องการขอบเขตที่ไม่มีการตัดจำหน่ายตัวเก็บรวบรวม Cheney จะไม่ทำเช่นนั้นมันจะทำการสแกนชุดสดทั้งหมดในแต่ละครั้งที่เรียกใช้ คำหลักที่ Google ใช้คือ "การรวบรวมขยะแบบเรียลไทม์" และ Djikstra et al และสตีลให้นักสะสมมาร์คและกวาดแบบเรียลไทม์เป็นครั้งแรกและเบเคอร์ได้มอบ gc แบบเรียลไทม์เป็นครั้งแรก
@article {dijkstra1978fly,
title = {{การเก็บขยะแบบทันที: การออกกำลังกายในความร่วมมือ}},
ผู้เขียน = {Dijkstra, EW และ Lamport, L. และ Martin, AJ และ Scholten, CS และ Steffens, EFM}
journal = {การสื่อสารของ ACM}
= ปริมาณ {21}
= จำนวน {11}
หน้า = {966--975}
ISSN 0001-0782 = {}
= ปี 1978 {}
สำนักพิมพ์ = {} ACM
}
@article {steele1975multiprocessing,
title = {{การประมวลผลหลายขั้นตอนการรวบรวมขยะแบบย่อ}},
ผู้เขียน = {Steele Jr, GL},
journal = {การสื่อสารของ ACM}
= ปริมาณ {18}
= จำนวน {9}
หน้า = {495--508}
ISSN 0001-0782 = {}
= ปี 1975 {}
สำนักพิมพ์ = {} ACM
}
@article {baker1978list,
title = {{การประมวลผลรายการแบบเรียลไทม์บนคอมพิวเตอร์อนุกรม}},
ผู้เขียน = {Baker Jr, HG},
journal = {การสื่อสารของ ACM}
= ปริมาณ {21}
= จำนวน {4}
หน้า = {280--294}
ISSN 0001-0782 = {}
= ปี 1978 {}
สำนักพิมพ์ = {} ACM
}