您需要控制最大内存大小标志(所有大小以MB为单位)。
“低内存设备”的推荐数量如下:
node --max-executable-size=96 --max-old-space-size=128 --max-semi-space-size=1 app.js
适用于32位和/或Android
node --max-executable-size=192 --max-old-space-size=256 --max-semi-space-size=2 app.js
适用于64位的非Android操作系统。
这些将限制堆总量分别为225mb和450mb。它不包括JS外部的内存使用。例如,缓冲区被分配为"c内存",而不是JavaScript堆中的内存。
此外,您应该知道,越接近堆限制,垃圾回收所花费的时间就越多。例如,如果您的内存使用率达到95%,则90%的CPU将用于进行垃圾回收,而10%用于运行实际代码(数字不准确,但给出了一般想法)。因此,您应该尽可能慷慨地设置限制,永远不要超过最大内存使用量的16%,即 heapUsed/limit
不应大于 0.16
。 16%只是我从某篇论文中记得的一个数字,可能不是最优的。
标志:
--max-executable-size
为可执行代码(即时编译的JavaScript生成的本机代码)保留的最大堆大小。--max-old-space-size
为长期对象保留的最大堆大小--max-semi-space-size
为短期对象保留的最大堆大小