패스잇
백엔드 개발 · 심화

Node.js 애플리케이션에서 메모리 누수가 발생하는 주요 원인들과 Heap Dump 분석을 통한 디버깅 방법을 설명해주세요.

힌트 · 클로저, 이벤트 리스너, 캐시 등이 주요 원인이며, --inspect 플래그와 Chrome DevTools로 분석 가능합니다.

가비지 컬렉션클로저이벤트 리스너Heap Dump메모리 프로파일링

모범답안

Node.js 애플리케이션에서 메모리 누수는 가비지 컬렉션이 더 이상 사용하지 않는 메모리를 회수하지 못할 때 발생합니다. 주요 원인으로는 첫째, 클로저를 잘못 사용하여 외부 스코프의 변수를 계속 참조하는 경우입니다. 둘째, 이벤트 리스너를 등록만 하고 해제하지 않아 메모리에 계속 남아있는 경우, 특히 서버나 데이터베이스 연결과 관련된 리스너가 그렇습니다. 셋째, 캐시를 사용할 때 만료 설정을 제대로 하지 않아 메모리가 계속 증가하는 경우도 있습니다.

Heap Dump 분석은 이러한 메모리 누수를 디버깅하는 효과적인 방법입니다. Node.js를 --inspect 플래그로 실행하고 Chrome DevTools를 사용하여 Heap Dump를 생성하고 분석할 수 있습니다. DevTools를 통해 객체의 크기, 참조 관계 등을 파악하여 메모리 누수의 원인을 찾아낼 수 있습니다. 예를 들어, 특정 객체가 예상보다 많이 생성되었거나, 해제되지 않고 계속 유지되는 것을 확인할 수 있습니다.

읽었다면, 이제 직접 답해볼 차례예요

패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.

함께 보는 Node.js 면접 질문

← Node.js 면접 질문 전체 보기