Кіріспе

Чейни алгоритмі, алғаш рет 1970 жылы ACM басылымында C. J. Cheney сипаттаған, компьютерлік бағдарламалық қамтамасыз ету жүйелерінде қоқыс жинаудың тоқтату және көшіру әдісі болып табылады. Бұл схемада үйінді екі тең бөлікке бөлінеді, олардың тек біреуі кез келген уақытта қолданылады. Қоқыс жинау тірі объектілерді бір жартылай кеңістіктен (from space) екіншісіне (to space) көшіру арқылы жүзеге асырылады, содан кейін ол жаңа үйіндіге айналады. Ескі үйіндінің барлығы бірден жойылады. Бұл бұрынғы тоқтату және көшіру әдісінен жақсырақ. Чейни алгоритмі элементтерді келесідей қалпына келтіреді:
Стектегі объектілерге сілтемелер тексеріледі. From space-тегі объектіге сілтеме жасайтын әрбір сілтеме үшін келесі екі амалдың бірі орындалады:
Егер объект әлі to space-ке көшірілмеген болса, онда to space-те оның бірдей көшірмесі жасалады, содан кейін from space-тегі нұсқасы to space-тегі көшірмеге бағыттаушы сілтемемен алмастырылады. Содан кейін объектіге сілтеме to space-тегі жаңа нұсқаға сілтеме жасау үшін жаңартылады. Егер объект to space-ке көшірілген болса, онда сілтеме from space-тегі бағыттаушы сілтеме арқылы жаңартылады. To space-тегі объектілер. Қоқыс жинағыш to space-ке көшірілген объектілердегі барлық объектілерге сілтемелерді тексереді және сілтемеленген объектілер үшін жоғарыда аталған екі амалдың біреуін орындайды. Барлық to space сілтемелері тексеріліп, жаңартылғаннан кейін қоқыс жинау аяқталады. Алгоритмге стек қажет емес және тек екі сілтеме қажет: to space-тегі бос орынның басына сілтеме және to space-те тексеруге тиіс келесі сөз. Екі сілтеме арасындағы деректер оның орындауы үшін қалған жұмысты көрсетеді (бұл объектілер үш түсті терминологияда сұр түсті, кейінірек қараңыз). Бағыттаушы сілтеме (кейде «жарылған жүрек» деп аталады) тек қоқыс жинау процесінде қолданылады; егер to space-тегі объектіге сілтеме табылса (осылайша from space-те бағыттаушы сілтемесі бар), сілтемені жылдам жаңартуға болады, оның сілтемесін бағыттаушы сілтемеге сәйкестендіру арқылы. Стратегия барлық тірі сілтемелерді, содан кейін сілтемеленген объектілердегі барлық сілтемелерді сарқып алу болғандықтан, бұл ендік бірінші көшіру қоқыс жинау схемасы деп аталады.

Жартылай кеңістік

Чейни өз жұмысын жарты кеңістіктік қоқыс жинағышқа негіздеді, оны бір жыл бұрын Р.Р. Феничел және Дж.С. Йочелсон жариялаған.

Үш түсті абстракцияға теңестіру

Чейни алгоритмі – үш түсті таңбалау арқылы қоқыс жинаудың мысалы. Сұр жиынның бірінші мүшесі – стек өзі. Стекте сілтеме берілген объектілер қара және сұр жиындардың мүшелерін қамтитын "to" кеңістігіне көшіріледі. Алгоритм кез келген ақ объектілерді (бастапқы кеңістікте алға бағыттау көрсеткіштері жоқ объектілерге тең) "to" кеңістігіне көшіру арқылы сұр жиынға жылжытады. "To" кеңістігінде сканерлеу көрсеткіші мен бос кеңістік көрсеткіші арасындағы объектілер әлі сканерленбеген сұр жиынның мүшелері болып табылады. Сканерлеу көрсеткішінің астындағы объектілер қара жиынға жатады. Объектілер қара жиынға тек сканерлеу көрсеткішін олардың үстінен жылжыту арқылы көшіріледі. Сканерлеу көрсеткіші бос кеңістік көрсеткішіне жеткенде, сұр жиын бос болады және алгоритм аяқталады.