원인 목록을 외웠는지가 아니라, 누수 시나리오·예방 습관·실제 진단 절차를 한 흐름으로 이을 수 있는지 가르려는 질문이다.
JavaScript 메모리 누수는 더 이상 쓰지 않을 객체가 어딘가에서 여전히 참조되고 있어 GC가 회수하지 못한 채로 남는 상태를 말한다. SPA에서 가장 흔한 시나리오는 unmount된 컴포넌트에 붙어 있던 이벤트 리스너·timer가 그대로 살아 큰 객체를 붙들고 있는 경우, 클로저가 DOM 노드나 큰 상태를 캡처한 채 살아 있는 경우, 전역 변수·캐시·옵저버에 객체를 계속 쌓는 경우다. 진단은 DevTools Memory 패널의 힙 스냅샷을 시점별로 찍어 같은 객체가 줄지 않고 늘어나는지, retain path가 어떤 참조 사슬을 타고 있는지 따라가는 방식으로 좁힌다. 해결은 결국 cleanup 보장, 참조 범위 축소, 약한 참조(WeakMap·WeakRef) 활용 세 가지로 모인다.
힙 스냅샷을 비교하며 새는 객체와 retain path를 좁혀 본 경험이 있다면 진단 사례로 연결할 수 있다
cleanup 패턴을 공통 훅·유틸로 강제해 본 적이 있다면 예방 설계 관점에서 말할 수 있다
메모리 예산·경보를 도입해 본 경험이 있다면 누수와 정상 사용을 구분하는 운영 방식으로 엮을 수 있다
아직 공개된 답변이 없어요. 첫 공개 답변을 남겨보세요.