由于v8的限制,在32位的机器上Node可用的内存是约0.7G,在64位的机器上Node可用的内存是约1.4G。现在物理主机有32G内存,程序会进行一些耗内存操作,所以需要增大内存。
我的程序是通过一个npm命令行模块启动的,比如xxx start,系统启动的时候是通过守护进程执行xxx start 命令的。我尝试在这个命令行模块的bin 文件的第一行加
#! /usr/bin/env node --max_old_space_size=4096
但是程序启动的时候就卡住了。。。。在代码里用v8.setFlagsFromString的方式设置也无效。
求指导。
回复 (5)
B
在不升级Node的前提下。。。
G
试验过了,不能直接跟 --max_old_space_size 你可以参考这篇文章试试看 How to run node with flag --max_old_space_size
测试是否生效
const v8 = require('v8');
const totalHeapSize = v8.getHeapStatistics().total_available_size;
let totalHeapSizaInMB = (totalHeapSize / 1024 / 1024).toFixed(2)
console.log("V8 Total Heap Size", totalHeapSizaInMB, "MB");
补充: 改成这样的
#!/bin/sh
":" //#; exec /usr/bin/env node --max-old-space-size=4096 "$0" "$@"
B
引用 GreyPrinceZote试验过了,不能直接跟 max old space size 你可以参考这篇文章试试看 How to run node with flag max old space size 测试是否生效 补...
@GreyPrinceZote 非常感谢,我明天上班试一下。感觉有戏,是shell的hack技巧。
B
@GreyPrinceZote 再次感谢!这个方法亲测有效,解决了困扰我一个月的问题。
Z
论坛大佬多
参与回复
登录后即可参与回复。登录