【求助-已解决】Node6.10.0如何增加老生代的内存
发布于 6 年前 作者 blackmatch 4163 次浏览 最后一次编辑是 5 年前 来自 问答

由于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 再次感谢!这个方法亲测有效,解决了困扰我一个月的问题。

回到顶部