Алгоритм збирання сміття «познач і прибери». непрямий алгоритм збору, що означає, що він не має прямої інформації про сміття, натомість він ідентифікує сміття, видаляючи все ЖИВО.4 червня 2022 р.
Збірник сміття Mark-and-Sweep має дві фази:
- Позначити: починаючи з коренів, позначити всі доступні об’єкти за допомогою обходу вказівника пошуку в глибину.
- Очищення: проскануйте купу від початку до кінця та відновіть непомічені об’єкти (і зніміть позначки з позначених об’єктів).
Алгоритм позначення та розгортки Цей алгоритм передбачає знання набору об’єктів, які називаються коренями. У JavaScript корінь є глобальним об’єктом. Періодично збирач сміття буде починати з цих коренів, знаходити всі об’єкти, на які посилаються ці корені, потім усі об’єкти, на які посилаються ці корені, тощо.
У той час як алгоритм підрахунку посилань працює щоразу, коли на об’єкт посилається або розіменовується, Mark-Sweep зазвичай виконується через певні проміжки часу. Крок 1: Починаючи з кореневого набору, ми простежуємо наш графік пам’яті. Позначте всі досягнуті об'єкти. Крок 2. Перегляньте пам’ять і звільніть весь непозначений простір.
Алгоритм позначення та розгортки працює у два етапи. На етапі позначки він проходить граф об’єктів, починаючи з кореневих об’єктів, і позначає всі доступні об’єкти. У фазі розгортки він звільняє пам’ять непозначених об’єктів.
Перегляд усієї купи виконується для відновлення непозначених об’єктів у вільному списку, щоб їх можна було перерозподілити. Навпаки, копіювальний колектор копіює доступні об’єкти в іншу область пам’яті, коли вони обходяться.