let first = document.getElementById("first");
let second = document.getElementById("second");
first.addEventListener("click", () => {
second.remove();
console.log(second); // 제거해도 출력(메모리 누수)
});
메모리 누수 막는 방법
이벤트 핸들러 콜백 범위 내에 제거할 DOM 항목 선언하고 항목 제거
let first = document.getElementById("first");
first.addEventListener("click", () => {
let second = document.getElementById("second");
second.remove();
});
이벤트 사용 후 등록 해지
let first = document.getElementById("first");
first.addEventListener("click", () => {
let second = document.getElementById("second");
second.remove();
});
first.removeEventListener("click");
3. window 전역 객체
window 전역 객체에 포함되는 객체는 메모리에 존재합니다.
var global = "🌎";
window.global // "🌎"
전역 속성으로 추가된 객체(전역변수)는 제거할 수 없습니다.
따라서 가능하면 var로 선언한 전역변수를 사용하지 않는 것이 메모리 절약에 유리합니다.
필수적이지 않은 전역변수는 함수 내부로 위치를 이동할 수 있습니다.
4. 객체 참조 제한
함수에 객체의 전체 범위가 아닌 필요한 부분만 참조하여 과도한 메모리 사용을 최소화해야 합니다.