기술

Nodejs `JavaScript heap out of memory` 오류 시 해결방법

융서융서 2021. 4. 7. 11:56

 

nodejs 웹페이지를 구현할 때

콘솔창에  node main.js 를, (main.js는 내가 만든 js파일 이름)

검색엔진에 localhost:3000 을 입력해서 페이지로 이동한다 (3000 은 내가 지정한 포트번호)

그런데 아래와 같이

콘솔창에 에러 메시지가 뜨면서 웹이 안뜬다면

JavaScript heap out of memory 오류가 발생한 것이다.

 

이 오류는 과도한 메모리 점유로 인하여 js 엔진이 폭발한 것인데,

이럴 때는 더 큰 메모리를 할당해주면 된다.

 

heap out memory 오류 메시지


1. JavaScript heap out of memory

Nodejs의 기본 메모리 사이즈를 512MB 초과하면 자동으로 앱이 종료된다.

기본 메모리 사이즈를 늘리는 방법에 대해서 알아보자.

 

커맨드라인 환경에서는 node --max-old-space-size=12000 app.js 로 하면 된다.

숫자는 mb를 의미하는데 12000이면 대략 1.2GB의 메모리까지 허용하겠다는 의미다.

=> 콘솔에 node --max-old-space-size=12000 main.js 를 입력해주니까 문제 없이 웹페이지가 나온다.


+추가

2. RangeError: Invalid string length

노드의 max-old-space-size 파라미터로

힙 사이즈를 필요한 만큼 지정해 실행했는데도, 동일하게 발생한다면.

확인해보니, V8은 구조적 문제로 객체의 크기를 1.9기가로 제한하고 있다고 한다.

사이즈가 큰 객체를 stringify 하는 과정에서 문자열의 크기가 지나치게 커진 것이 문제였다.

해결책 : 링크 참고