Вопрос проверяет умение выявлять и устранять утечки памяти в приложениях, что критично для стабильности и производительности.
Утечка памяти — это ситуация, когда приложение продолжает удерживать память, выделенную для объектов, которые уже не используются, что со временем может привести к замедлению работы или падению программы. Процесс отладки требует системного подхода и использования специализированных инструментов.
window или globalThis.setInterval или setTimeout, которые не очищаются.// Потенциальная утечка: слушатель добавляется, но никогда не удаляется.
const button = document.getElementById('myButton');
const hugeArray = new Array(1000000).fill('data');
button.addEventListener('click', function onClick() {
// Функция захватывает hugeArray через замыкание.
console.log('Clicked', hugeArray.length);
});
// Если кнопка удаляется из DOM, слушатель и hugeArray могут остаться в памяти.
// Исправление: хранить ссылку и удалять слушатель при необходимости.
function createListener() {
const hugeArray = new Array(1000000).fill('data');
const listener = () => console.log('Clicked', hugeArray.length);
button.addEventListener('click', listener);
// Возвращаем функцию для очистки.
return () => button.removeEventListener('click', listener);
}
const cleanup = createListener();
// Когда кнопка больше не нужна, вызовите cleanup().В Node.js можно использовать флаг --inspect для подключения DevTools или модули вроде heapdump для создания снимков кучи. Для серверных приложений также полезно мониторить использование памяти процесса с помощью утилит типа top или process.memoryUsage().
Вывод: Методика дебага утечек памяти необходима для создания надёжных долгоживущих приложений, особенно одностраничных приложений (SPA) и серверов с большим временем работы. Регулярная проверка памяти во время разработки помогает предотвратить накопление проблем в продакшене.