콘텐츠로 이동

Node.js에서 max_old_space_size를 설정하는 방법

등록일

수정일

Node.js 작업 중 메모리가 부족하면 max_old_space_size 옵션으로 heap 메모리 제한을 늘릴 수 있다.

이 문서는 일시적으로 메모리를 늘리는 방법, 실행할 때만 지정하는 방법, package.json 스크립트에 넣는 방법을 간단히 정리한다.

1) 현재 셸 세션에서 일시적으로 설정하기

섹션 제목: “1) 현재 셸 세션에서 일시적으로 설정하기”
Terminal window
export NODE_OPTIONS=--max_old_space_size=4096
  • 4096은 4GB를 뜻한다.
  • 해당 셸에서 실행하는 Node.js 프로세스에 적용되며, 새 세션을 열면 다시 설정해야 한다.
Terminal window
node --max_old_space_size=4096 ${NODE_SCRIPT_FILE}.js
  • 특정 스크립트만 메모리 제한을 늘려 실행하고 싶을 때 사용한다.
{
"scripts": {
"start": "node --max_old_space_size=4096 sample-script.js"
}
}
  • 자주 실행하는 명령이라면 스크립트에 넣어 두는 편이 편하다.
Terminal window
export NODE_OPTIONS=--max_old_space_size=4096
Terminal window
node --max_old_space_size=8192 sample-script.js

3) package.json 스크립트로 실행하기

섹션 제목: “3) package.json 스크립트로 실행하기”
Terminal window
npm run start

  • 값은 MB 단위다.
  • 4096은 4GB(1024MB x 4), 8192는 8GB(1024MB x 8)를 뜻한다.

2) 모든 문제를 메모리로 해결할 수 있는 것은 아니다

섹션 제목: “2) 모든 문제를 메모리로 해결할 수 있는 것은 아니다”
  • 메모리 부족 에러를 피하는 데는 도움이 되지만, 빌드나 스크립트 자체가 비효율적인 경우에는 근본 해결이 아닐 수 있다.
  • max_old_space_size는 Node.js가 사용하는 V8 엔진의 old space 크기를 조절하는 옵션이다.
  • 실무에서는 보통 Heap Memory를 늘린다고 표현하지만, 정확히는 V8 heap 영역 중 오래 살아남은 객체가 쌓이는 old space 제한을 늘리는 쪽에 가깝다.
  • Heap Memory는 객체가 올라가는 메모리 영역을 넓게 가리키는 표현이다.
  • V8 old space는 그 heap 안에서도 오래 살아남은 객체를 저장하는 영역이다.
  • max_old_space_size는 heap 전체를 직접 조절하는 옵션이라기보다, 오래 유지되는 객체 영역의 제한을 늘리는 옵션으로 이해하는 편이 더 정확하다.