nodejs 웹페이지를 구현할 때
콘솔창에 node main.js 를, (main.js는 내가 만든 js파일 이름)
검색엔진에 localhost:3000 을 입력해서 페이지로 이동한다 (3000 은 내가 지정한 포트번호)
그런데 아래와 같이
콘솔창에 에러 메시지가 뜨면서 웹이 안뜬다면
JavaScript heap out of memory 오류가 발생한 것이다.
이 오류는 과도한 메모리 점유로 인하여 js 엔진이 폭발한 것인데,
이럴 때는 더 큰 메모리를 할당해주면 된다.
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 하는 과정에서 문자열의 크기가 지나치게 커진 것이 문제였다.
해결책 : 링크 참고