320x100
320x100

메모리 누수 (Memory Leak)

: 가비지 컬렉션이 가비지라고 판단하지 않은 데이터들이 쌓여 메모리를 수거하지 않아 

  프로그램의 메모리 사용량이 폭발적으로 증가하는 현상

 

 

 

메모리 누수 확인 방법

: heapdump 와 같은 패키지를 프로젝트에 설치하여 주기적으로 힙 덤프 파일을 생성해 

  어떤 객체가 메모리 사용량이 높은지 확인 

: 노드 크롬 디버거 혹은 clinic js와 같은 모니터링 툴을 통해 실시간으로 확인

 

 

 

노드 크롬 디버거

- 프로그램 실행

: node --inspect index.js

- 크롬의 inspect 실행

: chrome://inspect

 

- 현재 가동중인 서버에 대한 inspect 확인

: chrome://inspect/#devices

: Remote Target의 inspect 클릭

- 디버거 실행

: Memory > Profiels의 메모리 부분

: 현재 사용중인 메모리 확인

 

- 스냅샷 생성

: Select profiling Page에서 Take Snapshot 클릭 

 

- 스냅샷 확인

: 생성된 스냅샷 클릭 > Statics 및 Summary 등 확인

 

- 메모리 부하를 주는 자바스크립트의 메소드 확인

: 앱 재시작

: Select profiling Page에서 Allocation sampling

: Tree 형식으로 확인

 

 

 

 

 

NodeJS의 메모리 누수 확인 도구

- heapdump

: 가장 많이 쓰이는 힙 덤프 도구

: https://www.npmjs.com/package/heapdump

 

- memwatch

: 메모리 사용 상태에 대해서 확인할 수 있는 도구

: https://www.npmjs.com/package/memwatch

 

- node-inspector

: 실행중인 앱의 메모리 사용 상태를 확인할 수 있는 도구

: https://www.npmjs.com/package/node-inspector

 

- clinic.js

: 전역 도구로, 시각적으로 메모리 사용량을 쉽게 확인할 수 있는 도구

: https://clinicjs.org/

 

 

 

 

 

 

 

 

Refference

 

Nodejs - 메모리 누수 확인

1. 개요 2. 메모리 누수란? 3. 메모리 누수 확인 4. 노드 크롬 디버거 5. 누수 발생 확인 수많은 글들이 노드의 메모리 누수에 대한 글들을 설명하고 해결방법, 대안을 포스팅했지만 정말 겉만 번지

ajh322.tistory.com

 

300x250
728x90