Her*_*ler 13 garbage-collection memory-management v8 node.js
我正在使用util模块调试nodejs应用程序,而heapUsed值保持在30-100MB左右,heapTotal值增长到1.4GB.
我已经读过这是v8垃圾收集器的行为方式,但问题是如果在512 MB设备上运行,如何减少它分配的内存量(使其小于1.4GB)
Esa*_*ija 24
您需要控制最大内存大小标志(所有大小均以MB为单位).
node --max-executable-size=96 --max-old-space-size=128 --max-semi-space-size=1 app.js
Run Code Online (Sandbox Code Playgroud)
适用于32位和/或Android和
node --max-executable-size=192 --max-old-space-size=256 --max-semi-space-size=2 app.js
Run Code Online (Sandbox Code Playgroud)
对于64位非android.
这些将分别将堆总数限制为225mb和450mb.它不包括JS之外的内存使用.例如,缓冲区被分配为"c内存",而不是JavaScript堆中.
此外,您应该知道,您越接近堆限制,GC中浪费的时间就越多.例如,如果你的内存使用率为95%,那么90%的CPU将用于GC,10%用于运行实际代码(不是实数,而是提供一般的想法).所以你应该尽可能慷慨的限制,永远不要超过最大内存使用量的16%(IE heapUsed/limit不应该大于0.16).16%是我从某篇论文中回忆起来的东西,它可能不是最优的.
标志:
--max-executable-size 为可执行代码保留的最大堆大小(即时编译的JavaScript的本机代码结果). --max-old-space-size 为长期对象保留的最大堆大小--max-semi-space-size 为短期对象保留的最大堆大小| 归档时间: |
|
| 查看次数: |
7114 次 |
| 最近记录: |