자동 GC라는 사실만 아는지, 아니면 도달 가능성과 알고리즘 차이까지 보고 누수 원인을 추적할 수 있는지를 가른다.
자바스크립트는 값을 만들 때 엔진이 메모리를 자동으로 할당하고, 더 이상 어디서도 닿을 수 없는 객체를 가비지 컬렉터가 회수한다. 원시값은 보통 스택에, 객체는 힙에 동적으로 놓이고, 변수에 들어가는 건 객체 자체가 아니라 그 참조다. GC는 참조 카운팅처럼 참조 수만 세는 방식 대신, 루트(전역·실행 중 스택)에서 출발해 도달 가능한 것만 살리는 mark-and-sweep을 기본으로 쓴다. 그래서 개발자가 free를 부르지 않아도 회수가 일어나지만, 닫지 않은 클로저나 캐시처럼 참조가 남아 있으면 회수 대상이 되지 않는다.
힙 스냅샷으로 누수 의심 객체를 추적했던 경험을 어떤 참조 체인이 남아 있었는지로 풀 수 있다
이벤트 리스너나 캐시를 정리하지 않아 메모리가 쌓였던 경험을 GC 회수 조건과 엮어 설명할 수 있다
메모리 개선 전후 사용량 지표를 들고 가 측정 기반 개선 사례로 연결할 수 있다
아직 공개된 답변이 없어요. 첫 공개 답변을 남겨보세요.