JavaScript도 메모리 관리를 신경 써야 하나요? 가비지 컬렉터가 자동으로 해주는 거 아닌가요?
GC가 자동이지만 메모리 누수는 발생합니다. GC가 해제 못하는 경우:
흔한 메모리 누수 패턴:
// 1. 전역 변수 축적window.cache = []; // 계속 쌓임// 2. 이벤트 리스너 미해제element.addEventListener("click", handler);// element가 DOM에서 제거돼도 handler가 참조 유지// 3. setInterval 미정리const id = setInterval(() => { /* ... */ }, 1000);// clearInterval(id) 안 하면 영원히 실행// 4. 클로저가 큰 객체 참조function outer() { const hugeData = new Array(1000000); return function inner() { // hugeData를 참조하지 않아도 스코프에 존재 };}
디버깅: Chrome DevTools → Memory → Heap Snapshot 비교
SPA에서 페이지 이동 시 이벤트 리스너와 타이머를 정리하는 것이 중요합니다.
댓글 1
GC가 자동이지만 메모리 누수는 발생합니다. GC가 해제 못하는 경우:
흔한 메모리 누수 패턴:
디버깅: Chrome DevTools → Memory → Heap Snapshot 비교
SPA에서 페이지 이동 시 이벤트 리스너와 타이머를 정리하는 것이 중요합니다.