【求助-已解决】Node6.10.0如何增加老生代的内存
由于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 回复
在不升级Node的前提下。。。
试验过了,不能直接跟 --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" "$@"
@GreyPrinceZote 非常感谢,我明天上班试一下。感觉有戏,是shell的hack技巧。
@GreyPrinceZote 再次感谢!这个方法亲测有效,解决了困扰我一个月的问题。
论坛大佬多