Nuxt.jsで静的サイトを作成する処理を実行したら、計算途中でメモリが不足してエラーとなり止まってしまった。 ヒープ領域を確保して処理を通します。
参考: https://qiita.com/nakamto/items/8ed18f9f0d980fd70be1
環境
- CentOS Linux 7
- node v14.15.3
- yarn 1.22.10
エラー
$ yarn generate
(省略)
<--- JS stacktrace --->
FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
1: 0xa04200 node::Abort() [/usr/local/bin/node]
2: 0x94e4e9 node::FatalError(char const*, char const*) [/usr/local/bin/node]
3: 0xb7860e v8::Utils::ReportOOMFailure(v8::internal::Isolate*, char const*, bool) [/usr/local/bin/node]
4: 0xb78987 v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, bool) [/usr/local/bin/node]
5: 0xd33215 [/usr/local/bin/node]
6: 0xd33d9f [/usr/local/bin/node]
7: 0xd41e2b v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [/usr/local/bin/node]
8: 0xd459ec v8::internal::Heap::AllocateRawWithRetryOrFailSlowPath(int, v8::internal::AllocationType, v8::internal::AllocationOrigin, v8::internal::AllocationAlignment) [/usr/local/bin/node]
9: 0xd0b2f2 v8::internal::Factory::AllocateRaw(int, v8::internal::AllocationType, v8::internal::AllocationAlignment) [/usr/local/bin/node]
10: 0xd05174 v8::internal::FactoryBase<v8::internal::Factory>::AllocateRawWithImmortalMap(int, v8::internal::AllocationType, v8::internal::Map, v8::internal::AllocationAlignment) [/usr/local/bin/node]
11: 0xd074c1 v8::internal::FactoryBase<v8::internal::Factory>::NewRawTwoByteString(int, v8::internal::AllocationType) [/usr/local/bin/node]
12: 0x1097b49 v8::internal::Runtime_StringBuilderConcat(int, unsigned long*, v8::internal::Isolate*) [/usr/local/bin/node]
13: 0x1400039 [/usr/local/bin/node]
error Command failed with signal "SIGABRT".
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
解決方法
処理を実行する前にNODE_OPTIONS
のmax-old-space-size
を設定します。
$ export NODE_OPTIONS="--max-old-space-size=2048"
数値の単位はメガバイトです。 2048MBは2GBです。
V8ヒープの使用量がヒープ制限に近づいたとき、V8ヒープスナップショットをディスクに書き込み領域を確保します。
NODE_OPTIONSについて: https://nodejs.org/api/cli.html#cli_max_old_space_size_size_in_megabytes
【TypeScript】Jestでdescribeなどの関数がnot findになってるのを解消する
TypeScriptテストエラー解消schedule2021-10-10
【TypeScript】JestでインポートしたモジュールがCannot find moduleとなるエラー
TypeScriptテストエラー解消schedule2021-10-10
【Electron】PCのスリープと起動イベントを検知する
ElectronNodejsJavaScriptTypeScriptschedule2021-09-06