(22.02.06) Intellij - Javascript heap out of memory 오류
작은 지식이라도, 하루에 하나씩.
한 줄 요약
🦄힙 메모리 : 사용자가 동적으로 할당하고 해제하는, 직접 관리할 수 있는 영역🦄
🦄Intellij 같은 IDE는 VScode와는 다르게 프로젝트마다 사용할 수 있는 힙 메모리를 제약하는데, 프로젝트의 메모리 크기가 설정된 힙 메모리보다 커지면 터지는 오류이다. (여기서 "vscode는 IDE 처럼 쓸 수 있는 텍스트 에디터이다." 라는 말이 조금 다가왔다.) 🦄
들어가는 말
항상 vscode 만을 쓰는 나였지만, 팀장님께서 intellij가 좋다며 전환을 강력히 주장하시는 바람에 얼떨결에 intellij로 넘어오게 되었다. 인텔리제이는 그냥 java 전용 IDE 인줄 알았는데 왠걸, 자스 기반 프로젝트도 커버해주고, flutter 프로젝트도 관리해주는 짱짱 IDE 이였던 것이다.
거기다가, vscode에서는 플러그인으로 설치해야했던 깃 관련 기능들도 기본으로 제공하니 더욱 짱짱해보였다.
그러나 짱짱한 IDE 답게 여태까지 내가 신경끄고 있었던 ( 그리고 알지도 못했던 ) 부분에 대해 꼬치꼬치 따지기 시작했는데, 이번 Javascript heap out of memory 오류도 이 중 하나이다.
프로젝트 빌드를 위해서 yarn run build를 치는 순간... 위와 같은 에러를 뿜어냈는데, 알고보니 과도한 메모리 점유로 인하여 js 엔진이 터져버린것인데, vscode로 빌드할때는 이런 에러를 목도하지 못한 것으로 보아, 인텔리제이의 힙 메모리가 너무 작게 설정 되어있던게 아닐까 라는 생각을 하게 되었다.
해결
간단히 힙 메모리를 늘려주면 해결된다.
검색해보니 node --max-old-space-size=XXXX myFile.js 명령어로 node.js 자체의 메모리를 늘리는 방법이 있다는데,
좀 더 검색해보니, 스크립트를 작성하지 않고도 인텔리제이에서 GUI 환경으로 이를 설정하는 방법이 있다고 해서 소개한다.
1. Help -> Find action에서 registry 검색
2. typescript.service.node.arguments 검색한 이후, --max_old_space_size=4096 (4096는 예시임. 더 크게 설정도 가능) 입력
3. apply 한 이후, 인텔리제이 껐다 키기
4. profit!