node.js - TypeScript 服务因 IntelliJ 中的“堆限制附近分配失败 - JavaScript 堆内存不足”错误而崩溃
问题描述
下面是 IntelliJ IDEA 中 typescript 服务的配置:
服务不断崩溃和重生,这里是日志输出
Process: TypeScript service version: 3.2.1
Process: Default service options: {"baseUrl":"/Users/antkong/dev/myproject/src","experimentalDecorators":true,"importHelpers":false,"jsx":2,"lib":["lib.dom.d.ts","lib.dom.iterable.d.ts","lib.es2018.d.ts"],"moduleResolution":2,"outDir":"/Users/antkong/dev/myproject/target","strict":true,"skipLibCheck":true,"target":2,"sourceMap":true,"module":6,"configFilePath":"/Users/antkong/dev/myproject/tsconfig.json"}
FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
1: 0x1000389cc node::Abort() [/Users/antkong/.nvm/versions/node/v10.7.0/bin/node]
2: 0x100038ba8 node::FatalTryCatch::~FatalTryCatch() [/Users/antkong/.nvm/versions/node/v10.7.0/bin/node]
3: 0x1001a9d5a v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, bool) [/Users/antkong/.nvm/versions/node/v10.7.0/bin/node]
4: 0x100578772 v8::internal::Heap::FatalProcessOutOfMemory(char const*) [/Users/antkong/.nvm/versions/node/v10.7.0/bin/node]
5: 0x100577729 v8::internal::Heap::PerformGarbageCollection(v8::internal::GarbageCollector, v8::GCCallbackFlags) [/Users/antkong/.nvm/versions/node/v10.7.0/bin/node]
6: 0x1005753b8 v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [/Users/antkong/.nvm/versions/node/v10.7.0/bin/node]
7: 0x1005818fc v8::internal::Heap::AllocateRawWithRetry(int, v8::internal::AllocationSpace, v8::internal::AllocationAlignment) [/Users/antkong/.nvm/versions/node/v10.7.0/bin/node]
8: 0x100550294 v8::internal::Factory::NewFillerObject(int, bool, v8::internal::AllocationSpace) [/Users/antkong/.nvm/versions/node/v10.7.0/bin/node]
9: 0x1007daf84 v8::internal::Runtime_AllocateInNewSpace(int, v8::internal::Object**, v8::internal::Isolate*) [/Users/antkong/.nvm/versions/node/v10.7.0/bin/node]
10: 0x4986b2841bd
Disconnected
有什么办法可以增加节点进程的堆大小?
解决方案
有一个隐藏选项允许将参数传递给运行 TypeScript 服务的 Node.js 进程 - typescript.service.node.arguments
。
- 在帮助 | 查找操作...,键入
registry
- 打开Registry,在那里找到
typescript.service.node.arguments
键(您可以开始输入属性名称以导航到它) - 在那里添加
--max_old_space_size
选项(--max_old_space_size=4096
例如)
见https://github.com/thlorenz/v8-flags/blob/master/flags-0.11.md#max_old_space_size-0-integer
另请参阅https://www.npmjs.com/package/increase-memory-limit - 您可能会发现此实用程序很有帮助
推荐阅读
- docker - Docker EE 2.0 - 支持的操作系统
- java - Comparator#comparing 按类属性的属性排序
- java - 如何用枚举分类
- swift - 找不到 FirebaseStorage 模块,已经通过 CocoaPods 导入了,是不是改了?- 斯威夫特
- python - 我有按 kmeans 算法排序的区域。我希望这些区域作为区域(如多边形)。怎么做?
- mongodb - Mongoose:嵌套更新不起作用
- php - Web 服务不解释 php 代码
- c# - 方法访问方法混淆
- reactjs - 如何使用 j_security_check 在 React.JS 应用程序上对用户进行身份验证
- python - Python请求在python3中抓取时不返回电子邮件地址