(에러)Allocation failed - JavaScript heap out of memory
upbit api 를 사용하여 websocket 으로 연결후 데이터를 수신하던중... 아래와 같은 에러가 발생했다.
Allocation failed - JavaScript heap out of memory
뭐 대충 읽어보니 메모리가 넘쳤다 이런뜻인듯 하다.
처음 보는 에러에 매우 난감했지만, 우리의 구굴이 형님이 역시 나를 도와주셨다.
도움을 준 블로그 URL
https://ajh322.tistory.com/243
위 블로그가 아주 많은 도움이 되었다.
요약을 하자면, nodejs 디버깅 방법중의 하나이다.
콘솔창에
node --inspect 파일명.js
위와 같이 --inspect 옵션을 부여하고, 자체 개발한 node 파일을 실행한다.
그리고 크롬 브라우저 주소창에 아래와 같이 입력한다.
chrome://inspect
그럼 아래와 같은 화면이 나오게 되는데
위 화면에서 화살표가 가르키는 inspect 를 클릭하게 되면 새 브라우저가 오픈되며, 디버깅을 할 수 있게 된다.
직접 사용해 보면 쉽게 알 수 있을 것이며, 난 Memory 문제였기 때문에, Memory 탭 부분에서 문제가 되는 부분이
upbitSocket.onmessage 부분이라는 것을 알게 되었다. 해당 부분만 압도적으로 메모리 사이즈가 많은 것을 알수가 있다.
결론만 말하자면,
var enc = new TextDecoder("utf-8");
위 소스 한줄이 문제였다.
onmessage 부분에서 저 TextDecoder 를 계속 호출하고 있어서 발생한 문제로,
위 코드는 함수 바깥의 전역변수로 선언하여 사용하니, 완벽하게 해결이 되었다.
난 websocket 자체의 문제라고 생각했는데 흑흑 ㅠㅠ 고쳤다 고쳤어~!