Node.js 节点工作线程内存不足时出错
当我尝试在资源受限的windows环境中运行nodejs工作线程时,我收到错误Node.js 节点工作线程内存不足时出错,node.js,worker-thread,Node.js,Worker Thread,当我尝试在资源受限的windows环境中运行nodejs工作线程时,我收到错误错误[ERR\u WORKER\u OUT\u OF\u MEMORY]:工作线程由于达到内存限制而终止 默认情况下,每个线程的内存限制是多少 可以增加吗 谢谢。查看可以传递给工人构造函数的选项 引用文件: 资源限制 新JS引擎实例的一组可选资源限制。 达到这些限制将导致工作实例终止。 这些限制只影响JS引擎,没有外部数据, 不包括阵列缓冲器。即使设置了这些限制,流程也会 如果遇到全局内存不足的情况,可能仍会中止 ma
错误[ERR\u WORKER\u OUT\u OF\u MEMORY]:工作线程由于达到内存限制而终止
默认情况下,每个线程的内存限制是多少
可以增加吗
谢谢。查看可以传递给工人构造函数的选项
引用文件:
资源限制
新JS引擎实例的一组可选资源限制。
达到这些限制将导致工作实例终止。
这些限制只影响JS引擎,没有外部数据,
不包括阵列缓冲器。即使设置了这些限制,流程也会
如果遇到全局内存不足的情况,可能仍会中止
maxOldGenerationSizeMb中主堆的最大大小
MB
maxYoungGenerationSizeMb堆空间的最大大小
用于最近创建的对象
codeRangeSizeMb的大小为
用于生成代码的预分配内存范围
我还没有看到任何关于nodejs在您不填写默认值时如何选择这些默认值的文章。但是指定它们会给您一些控制
我要补充的是,当试图适应资源受限的目标时,nodejs并不是一个特别高效的内存环境。它在内存中保留可能并不需要的东西,就像它编译的所有原始源代码一样。它的GC特性使它的内存使用范围比手动控制的分配更广。它还特别不擅长一次读取大量数据集并将其解析为大量小字符串,因为这会导致内存使用高峰,即使当事情平静下来时,大量数据会被垃圾收集
另一个例子是,您可以读取/解析一个10MB的JSON文件,并将其作为Javascript数据存储,占用的内存是该文件的10倍。一般来说,这并不是对nodejs的控诉(我是一个超级粉丝),但是如果你想在较小的内存中使用这个工具,你必须更加小心。工作线程是一堆额外的内存开销(它自己的堆、自己编译的代码等等),比C/C++之类的东西要多得多。谢谢。设置资源限制有助于解决此问题。