그알것 — 그럼에도 알아야 할 것들
홈질문커뮤니티
로그인
그알것 — 그럼에도 알아야 할 것들

Service

  • 홈
  • 소개
  • 질문
  • 커뮤니티

My

  • 내 워크스페이스
  • 저장한 질문
  • 작성한 답변

Policy

  • 이용약관
  • 개인정보처리방침
  • 문의

© 2026 그알것 · What Still Matters

질문 목록Performance
Performance

JavaScript 메모리 누수는 어떤 상황에서 발생하나요?

실무4/5
설계4/5
인간4/5
기초4/5

면접관의 질문 의도

원인 목록을 외웠는지가 아니라, 누수 시나리오·예방 습관·실제 진단 절차를 한 흐름으로 이을 수 있는지 가르려는 질문이다.

큐레이션 답변

학습 자료

JavaScript 메모리 누수는 더 이상 쓰지 않을 객체가 어딘가에서 여전히 참조되고 있어 GC가 회수하지 못한 채로 남는 상태를 말한다. SPA에서 가장 흔한 시나리오는 unmount된 컴포넌트에 붙어 있던 이벤트 리스너·timer가 그대로 살아 큰 객체를 붙들고 있는 경우, 클로저가 DOM 노드나 큰 상태를 캡처한 채 살아 있는 경우, 전역 변수·캐시·옵저버에 객체를 계속 쌓는 경우다. 진단은 DevTools Memory 패널의 힙 스냅샷을 시점별로 찍어 같은 객체가 줄지 않고 늘어나는지, retain path가 어떤 참조 사슬을 타고 있는지 따라가는 방식으로 좁힌다. 해결은 결국 cleanup 보장, 참조 범위 축소, 약한 참조(WeakMap·WeakRef) 활용 세 가지로 모인다.

좋은 답변 구조

  1. 01메모리 누수의 정의(불필요한 참조로 GC 회수 실패)를 한 줄로 잡는다
  2. 02리스너·클로저·전역 캐시 같은 대표 시나리오를 구체 예와 함께 짚는다
  3. 03cleanup·참조 범위 축소·약한 참조 같은 예방 패턴을 정리한다
  4. 04DevTools 힙 스냅샷·retain path 추적 같은 실제 진단 절차로 마무리한다

자주 실수하는 포인트

익명 함수로 addEventListener를 한 뒤 remove 시 동일 참조를 못 맞춰 리스너가 계속 살아남는다
클로저가 큰 DOM이나 상태를 캡처하고 있다는 점을 보지 못하고 변수 스코프만 다듬는다
메모리 증가를 모두 누수로 단정해 정상 캐시 동작까지 의심한다

실무 맥락

  • 관리자·대시보드처럼 한 탭을 몇 시간 켜 두는 장수명 페이지
  • 무한 스크롤·실시간 피드처럼 노드와 구독이 계속 쌓이는 UI
  • SPA 라우팅 전환이 잦아 컴포넌트 cleanup이 운영 안정성에 그대로 묻어나는 서비스

본인 경험에 녹이는 힌트

힙 스냅샷을 비교하며 새는 객체와 retain path를 좁혀 본 경험이 있다면 진단 사례로 연결할 수 있다

cleanup 패턴을 공통 훅·유틸로 강제해 본 적이 있다면 예방 설계 관점에서 말할 수 있다

메모리 예산·경보를 도입해 본 경험이 있다면 누수와 정상 사용을 구분하는 운영 방식으로 엮을 수 있다

커뮤니티 인기 답변

전체 0개

아직 공개된 답변이 없어요. 첫 공개 답변을 남겨보세요.

관련 꼬리 질문

Q1WeakMap/WeakRef는 어떤 누수 시나리오에서 도움이 되나요
Q2React useEffect cleanup에서 흔한 실수는 무엇인가요
Q3메모리 누수와 GC 튜닝 이슈를 어떻게 구분하나요
아직 답을 쓰지 않았어요.
큐레이션 답변과 다른 사람 답변을 보고, 자기 언어로 답을 정리해보면 학습 효과가 가장 큽니다.
목차
  • 01면접관의 질문 의도
  • 02큐레이션 답변
  • 03좋은 답변 구조
  • 04자주 실수하는 포인트
  • 05실무 맥락
  • 06본인 경험에 녹이는 힌트
  • 07커뮤니티 인기 답변준비중
  • 08관련 꼬리 질문