Проверяет понимание управления памятью в языках со сборкой мусора и момента освобождения объекта.
Объект в куче не удаляется сразу, как только на него перестают ссылаться. В языках со сборкой мусора (Java, JavaScript, Python, C#) удаление происходит в момент, когда сборщик мусора (GC) обнаруживает, что объект стал недостижимым — то есть на него нет живых ссылок из корневых элементов (глобальные переменные, локальные переменные в стеке, статические поля).
Сборщик мусора периодически сканирует граф объектов, начиная от корней. Если объект не достижим, он помечается как мусор. В зависимости от алгоритма (Mark-and-Sweep, Generational Collection) объект может быть удалён немедленно или отложен до следующего цикла. Например, в V8 (JavaScript) объекты молодого поколения удаляются часто, а старые — реже.
function createUser() {
let user = { name: 'Alice' };
// user ссылается на объект в куче
return user;
}
let ref = createUser();
// объект жив, так как ref ссылается на него
ref = null;
// теперь объект недостижим, GC удалит его при следующем циклеУдаление объекта из кучи происходит не сразу после потери последней ссылки, а во время работы сборщика мусора. Это важно учитывать при работе с большими данными или в real-time системах, где задержки GC могут влиять на производительность.
Уровень
Рейтинг:
4
Сложность:
5
Навыки
JavaScript
Node.js
Ключевые слова
Подпишись на React Developer в телеграм
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию