通过JavaScript代码设置堆内存大小?

时间:2019-01-14 17:45:13

标签: javascript node.js environment-variables heap-memory

我正在node.js中编写一个脚本,该脚本在启动时会很快耗尽内存。

要解决此问题,我必须将内存增加到>> 5GB。我知道通过命令行来增加内存限制对于以这种方式启动脚本是必要的:node max-old-space-size = script.js,that效果很好。

我的问题是,如何通过代码设置max-old-space-size?可以通过代码设置变量,因此谁运行脚本可以在命令行中省略max-old-space-size =?

我想获得的是一个下载我的脚本的用户启动了它,而没有进行任何设置,脚本可以使用我从代码中设置的内存大小。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

一种实现所需目标的方法是从脚本中重新生成节点。我不确定这是否是最好的方法,但是应该可以。

# cat test.js
var cp = require('child_process');

function main() {
        console.log('This is the main script');
}

function spawn() {
        console.log('spawning the script with the correct node arguments');
        var c = cp.spawn('/opt/local/bin/node', ['--max-old-space-size=5120', __filename], {
                'stdio': 'inherit',
                'env': {
                        'RUN_MAIN_SCRIPT': 'TRUE'
                }
        });

        c.on('error', function (e) {
                console.log('Error');
                console.log(e.toString());
        });
}

process.env['RUN_MAIN_SCRIPT'] ? main() : spawn();
# node test.js
spawning the script with the correct node arguments
This is the main script
#