Выбор ответа Senior Память и сборка мусора обновлено
Гарантии FinalizationRegistry
Вопрос
Какое утверждение о колбэке FinalizationRegistry верное?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Может быть вызван сильно позже или не вызван вовсе: обязательную логику на нём не строят. Спецификация не гарантирует ни момент вызова, ни сам вызов: движок может отложить его надолго, а при закрытии страницы или завершении процесса колбэк может не выполниться.
Варианты ответа
- Вызывается синхронно в момент, когда на объект пропадает последняя ссылка
- Гарантированно вызывается до закрытия вкладки или завершения процесса Node
- Получает аргументом сам собранный объект, чтобы можно было освободить его поля
- Может быть вызван сильно позже или не вызван вовсе: обязательную логику на нём не строятправильный ответ
Разбор
Спецификация не гарантирует ни момент вызова, ни сам вызов: движок может отложить его надолго, а при закрытии страницы или завершении процесса колбэк может не выполниться. Аргументом приходит заранее зарегистрированное значение (held value), а не объект: объект к этому моменту уже собран. Поэтому реестр годится только для вспомогательной очистки, например внешних ресурсов, а освобождать важное нужно явно.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.