Қоқыс жинау мен қоқыс жинаудың айырмашылығы неде?


жауап 1:

Сұраққа жауап береді: Mark Compact алгоритмі - Wikipedia

Қоқыс жинау: Қол жетпейтін жад блоктарын (қоқысты) бос деп белгілеңіз.

Қысу: Есте сақтаудың қол жетімді блоктарын бір-біріне жақын етіп жылжытыңыз, сонда олардың арасында бос жад блоктары болмайды. Ол әдетте қоқыс жинаумен бірге жүзеге асырылады, бірақ қажет емес.

Неліктен қоқысты жинау өте маңызды: бағдарламалаушыға қоқысты басқаруды аяқтауға мүмкіндік береді. Қоқыс жинаушы әр қоқыс жадын С бағдарламашыларындағыдай белсенді түрде босатпай босатады. Бұл бағдарламашыны когнитивті стресстен босатады және дұрыс кодты жазуды жеңілдетеді (C ++ -де басқа модель бар).

Неліктен қысу маңызды: сығымдау әдетте қоқыс жинауымен бірге жасалады. Бөліну қысылу арқылы жойылады (Wikipedia). Фрагментация, қоқыс сақтау сияқты, сақтауды азайтады.

Мысалы, келесі сақтау орнын қарастырыңыз:

Мұнда жалпы көлемі 900 МБ болатын 2 тегін фрагменттер бар. Алайда, 1 ГБ жадты бөлу сәтсіз аяқталды, себебі қатарынан 900 МБ блок жоқ. Сығымдау 2-нысанды солға жылжытады. Бұл: