javascript로 queue를 구현하고 queue에서 요소 제거 시간을 측정하기 위해 배열을 초기화하는 도중 배열의 길이를 1억
으로 설정 했을 때 javascript heap out of memory error
가 발생했다.🔽 뭐 메모리 사이즈 오류라 생각하고 길이를 백만으로 줄이긴 했지만 1억으로 설정을 해 보고 싶어 찾아보다가 해결법을 찾아서 정리해본다.
이 오류가 난 것은 간단한다. 그냥 heap memory가 부족하여 발생하는 에러로서 heap size를 조정하면 해결할 수 있다. 이 때 오류가 나는 메모리의 사이즈는 512MB
로 이 size를 넘게되면 앱을 종료하게 된다.
오류가 난 코드는 아래와 같다.
src/queue.js code
...//
console.log("initializing array...");
const LENGTH = 100000000;
const normalArray = Array(LENGTH).fill(0);
console.log("finished initializing array...");
...//
전체 코드는 여기에 있다.
오류
아래 명령어로 기본 메모리의 사이즈를 늘려준다.
$ node --max-old-space-size=4096 src/queue.js
처음에 512MB에서 1G로 늘렸다가 여유있게 4G를 주니 오류없이 작동했다.
위 명령어 말고도 다른 방법도 있다. 기본적으로 메모리 사이즈를 늘려주는 것은 동일하다.
$ export NODE_OPTIONS=--max_old_space_size=4096
$ export NODE_OPTIONS=--max_old_space_size=4096