평화롭게 프런트게임 만들던 어느 날
갑자기 localhost가 접속을 거부했다

나는 vs code문제인 줄 알고 껐다가 켜보기도 하고
브라우저문제인 줄 알고 창을 껐다 켜보기 도 했다
그래도 연결할 수 없다고 하니 답답할 참에 터미널에 이상한 글자가 출력되었던걸 발견했다
이게 뭐야?
<--- Last few GCs --->
[29172:0000022393C75740] 8406 ms: Mark-Compact 457.4 (498.5) -> 360.5 (401.0) MB, 212.67 / 0.02 ms (+ 0.1 ms in 2 steps since start of marking, biggest step 0.1 ms, walltime since start of marking 2564 ms) (average mu = 0.961, current mu = 0.936) all[29172:0000022393C75740] 11789 ms: Scavenge 744.5 (785.0) -> 744.5 (785.0) MB, 192.74 / 0.00 ms (average mu = 0.961, current mu = 0.936) allocation failure;
<--- JS stacktrace --->
FATAL ERROR: invalid table size Allocation failed - JavaScript heap out of memory
----- Native stack trace -----
1: 00007FF6D08E0B6B node::SetCppgcReference+18123
2: 00007FF6D08524D8 DSA_meth_get_flags+92504
3: 00007FF6D12C9821 v8::Isolate::ReportExternalAllocationLimitReached+65
4: 00007FF6D12B2F78 v8::Function::Experimental_IsNopFunction+1336
5: 00007FF6D1114A20 v8::Platform::SystemClockTimeMillis+659328
6: 00007FF6D0EE58F9 v8::base::Thread::StartSynchronously+540185
7: 00007FF6D0ED83FF v8::base::Thread::StartSynchronously+485663
8: 00007FF6D0ED5B11 v8::base::Thread::StartSynchronously+475185
9: 00007FF6D0FBE642 v8::base::Thread::StartSynchronously+1428322
10: 00007FF6D0FB8472 v8::base::Thread::StartSynchronously+1403282
11: 00007FF6D0F563AE v8::base::Thread::StartSynchronously+1001678
12: 00007FF6D0EE0123 v8::base::Thread::StartSynchronously+517699
13: 00007FF6D0F57BE1 v8::base::Thread::StartSynchronously+1007873
14: 00007FF6D0F57324 v8::base::Thread::StartSynchronously+1005636
Starting the development server...
<--- Last few GCs --->
[31476:000001DE291D28A0] 8079 ms: Scavenge 455.0 (494.6) -> 455.0 (494.6) MB, 75.09 / 0.00 ms (average mu = 0.996, current mu = 0.995) allocation failure;
[31476:000001DE291D28A0] 11931 ms: Mark-Compact 839.0 (878.6) -> 648.3 (688.0) MB, 669.15 / 0.04 ms (+ 0.1 ms in 2 steps since start of marking, biggest step 0.1 ms, walltime since start of marking 5296 ms) (average mu = 0.926, current mu = 0.904) all
<--- JS stacktrace --->
FATAL ERROR: invalid table size Allocation failed - JavaScript heap out of memory
----- Native stack trace -----
1: 00007FF6D08E0B6B node::SetCppgcReference+18123
2: 00007FF6D08524D8 DSA_meth_get_flags+92504
3: 00007FF6D12C9821 v8::Isolate::ReportExternalAllocationLimitReached+65
4: 00007FF6D12B2F78 v8::Function::Experimental_IsNopFunction+1336
5: 00007FF6D1114A20 v8::Platform::SystemClockTimeMillis+659328
6: 00007FF6D0EE58F9 v8::base::Thread::StartSynchronously+540185
7: 00007FF6D0ED83FF v8::base::Thread::StartSynchronously+485663
8: 00007FF6D0ED5B11 v8::base::Thread::StartSynchronously+475185
9: 00007FF6D0FBE642 v8::base::Thread::StartSynchronously+1428322
10: 00007FF6D0FB8472 v8::base::Thread::StartSynchronously+1403282
11: 00007FF6D0F563AE v8::base::Thread::StartSynchronously+1001678
12: 00007FF6D0EE0123 v8::base::Thread::StartSynchronously+517699
13: 00007FF6D0F57BE1 v8::base::Thread::StartSynchronously+1007873
14: 00007FF6D0F57324 v8::base::Thread::StartSynchronously+1005636
7: 00007FF6D0ED83FF v8::base::Thread::StartSynchronously+485663
8: 00007FF6D0ED5B11 v8::base::Thread::StartSynchronously+475185
9: 00007FF6D0FBE642 v8::base::Thread::StartSynchronously+1428322
10: 00007FF6D0FB8472 v8::base::Thread::StartSynchronously+1403282
11: 00007FF6D0F563AE v8::base::Thread::StartSynchronously+1001678
12: 00007FF6D0EE0123 v8::base::Thread::StartSynchronously+517699
13: 00007FF6D0F57BE1 v8::base::Thread::StartSynchronously+1007873
14: 00007FF6D0F57324 v8::base::Thread::StartSynchronously+1005636
9: 00007FF6D0FBE642 v8::base::Thread::StartSynchronously+1428322
10: 00007FF6D0FB8472 v8::base::Thread::StartSynchronously+1403282
11: 00007FF6D0F563AE v8::base::Thread::StartSynchronously+1001678
12: 00007FF6D0EE0123 v8::base::Thread::StartSynchronously+517699
13: 00007FF6D0F57BE1 v8::base::Thread::StartSynchronously+1007873
14: 00007FF6D0F57324 v8::base::Thread::StartSynchronously+1005636
10: 00007FF6D0FB8472 v8::base::Thread::StartSynchronously+1403282
11: 00007FF6D0F563AE v8::base::Thread::StartSynchronously+1001678
12: 00007FF6D0EE0123 v8::base::Thread::StartSynchronously+517699
13: 00007FF6D0F57BE1 v8::base::Thread::StartSynchronously+1007873
14: 00007FF6D0F57324 v8::base::Thread::StartSynchronously+1005636
12: 00007FF6D0EE0123 v8::base::Thread::StartSynchronously+517699
13: 00007FF6D0F57BE1 v8::base::Thread::StartSynchronously+1007873
14: 00007FF6D0F57324 v8::base::Thread::StartSynchronously+1005636
13: 00007FF6D0F57BE1 v8::base::Thread::StartSynchronously+1007873
14: 00007FF6D0F57324 v8::base::Thread::StartSynchronously+1005636
15: 00007FF6D0F574E2 v8::base::Thread::StartSynchronously+1006082
14: 00007FF6D0F57324 v8::base::Thread::StartSynchronously+1005636
15: 00007FF6D0F574E2 v8::base::Thread::StartSynchronously+1006082
16: 00007FF6D0DED3C9 v8::CodeEvent::GetFunctionName+79321
15: 00007FF6D0F574E2 v8::base::Thread::StartSynchronously+1006082
16: 00007FF6D0DED3C9 v8::CodeEvent::GetFunctionName+79321
16: 00007FF6D0DED3C9 v8::CodeEvent::GetFunctionName+79321
17: 00007FF6D137B1AE v8::PropertyDescriptor::writable+678094
17: 00007FF6D137B1AE v8::PropertyDescriptor::writable+678094
18: 00007FF6D13B522C v8::PropertyDescriptor::writable+915788
18: 00007FF6D13B522C v8::PropertyDescriptor::writable+915788
19: 00007FF6D1396B9E v8::PropertyDescriptor::writable+791230
20: 00007FF6D12EC750 v8::PropertyDescriptor::writable+93808
21: 00007FF651AC6484
21: 00007FF651AC6484
Starting the development server...
<--- Last few GCs --->
[25540:0000029C3F050080] 8529 ms: Scavenge 459.2 (497.7) -> 459.2 (497.7) MB, 93.76 / 0.00 ms (average mu = 0.996, current mu = 0.995) allocation failure;
[25540:0000029C3F050080] 13647 ms: Mark-Compact 843.2 (881.7) -> 648.4 (687.3) MB, 649.09 / 0.03 ms (+ 25.0 ms in 2 steps since start of marking, biggest step 24.9 ms, walltime since start of marking 7050 ms) (average mu = 0.937, current mu = 0.922) a
<--- JS stacktrace --->
FATAL ERROR: invalid table size Allocation failed - JavaScript heap out of memory
----- Native stack trace -----
1: 00007FF6D08E0B6B node::SetCppgcReference+18123
2: 00007FF6D08524D8 DSA_meth_get_flags+92504
3: 00007FF6D12C9821 v8::Isolate::ReportExternalAllocationLimitReached+65
4: 00007FF6D12B2F78 v8::Function::Experimental_IsNopFunction+1336
5: 00007FF6D1114A20 v8::Platform::SystemClockTimeMillis+659328
6: 00007FF6D0EE58F9 v8::base::Thread::StartSynchronously+540185
7: 00007FF6D0ED83FF v8::base::Thread::StartSynchronously+485663
8: 00007FF6D0ED5B11 v8::base::Thread::StartSynchronously+475185
9: 00007FF6D0FBE642 v8::base::Thread::StartSynchronously+1428322
10: 00007FF6D0FB8472 v8::base::Thread::StartSynchronously+1403282
11: 00007FF6D0F563AE v8::base::Thread::StartSynchronously+1001678
12: 00007FF6D0EE0123 v8::base::Thread::StartSynchronously+517699
13: 00007FF6D0F57BE1 v8::base::Thread::StartSynchronously+1007873
14: 00007FF6D0F57324 v8::base::Thread::StartSynchronously+1005636
15: 00007FF6D0F574E2 v8::base::Thread::StartSynchronously+1006082
16: 00007FF6D0DED3C9 v8::CodeEvent::GetFunctionName+79321
17: 00007FF6D137B1AE v8::PropertyDescriptor::writable+678094
18: 00007FF6D13B522C v8::PropertyDescriptor::writable+915788
19: 00007FF6D1396B9E v8::PropertyDescriptor::writable+791230
20: 00007FF6D12EC750 v8::PropertyDescriptor::writable+93808
21: 00007FF651977144
겁나 길어서 gpt한테 물어보니까
Node.js 애플리케이션이 메모리 할당 문제로 인해 발생한 것으로 보입니다.
JavaScript heap out of memory 오류는 애플리케이션이 사용 가능한 메모리 한계를 초과했을 때 발생합니다.
애플리케이션이 사용 가능한 메모리 한계를 초과
이걸 설명해서 풀어보면
Node.js 애플리케이션이 너무 많은 데이터를 처리하거나 메모리를 많이 사용하는 작업을 하다가 메모리 부족 현상이 일어났다. 그래서 애플리케이션이 더 이상 정상적으로 실행되지 않고 오류가 발생한 거다.
보통 대용량 데이터처리나 메모리 누수, 노드 모듈의 버그로 인해 이런 현상이 발생하는데
문제는 내가 작성한 코드는 대용량의 데이터처리가 필요가 없고, 메모리 누수도 아닌 것 같았다
그러면 노드 모듈의 버그로 저런 오류가 떴다는 건데 그래서 gpt에 물어보니까
노드 모듈을 그냥 단순히 삭제하고 다시 설치하라는 거였다
rm -rf node_modules
npm install
npm start
그래서 이렇게 node_modules을 지우고 다시 설치 후에 실행을 하니 정상적으로 돌아왔다
다시 알아보니까 의존성의 문제로도 이러한 오류가 발생할 수 있었다
특정 라이브러리나 의존성이 문제될때에도 그냥 지우고 다시 설치하면 된다고 한다
이걸 왜 적었냐?
그냥 한번 기록으로 남겨두고 싶었다
Node.js에 기본 메모리가 1.5G라는 것도 이 오류를 해결하면서 알게 되었고,
여러모로 재미있어서 블로그로 남겨 보았다
만약에 순수하게 메모리 문제로 저런 오류가 발생했다면
node --max-old-space-size=4096 [your_script.js]
이렇게 적으면 된다고 한다
'기타&일상' 카테고리의 다른 글
2025를 맞이 하며 (0) | 2025.01.07 |
---|