您的位置:首页 > Web前端 > Node.js

Node -- 内存控制

2018-07-19 16:16 169 查看

在一般的后端语言中是没有内存使用限制的,但是Node中通过JS使用内存时智能使用部分内存,64bit=>1.4G,32bit=>0.7G,所以Node无法直接操作大内存对象,之所以会有这种现象,是因为Node是基于V8引擎构建,V8对于JS对象是通过自己的方式来分配和管理的。至于V8为何要限制内存,其实是出于两方面考虑的一是当时V8面向的是浏览器,大量内存的使用场景很少,二是垃圾回收机制的限制。当然这个限制可以设置。

process.memoryUsege() 查看内存使用情况。

1. 内存相关参数整理

node 启动时添加

--max-old-space-size 新生代空间
--max-new-space-size 老生代空间
--trace_gc -e 垃圾回收日志

2. 大内存的应用

[code]// method1
var reader = fs.createReadStream('in.txt');
var writer = fs.createWriteStream('out.txt');
reader.on('data', function(chunk){
writer.write(chunk);
}
reader.on('end', function(){
writer.end();
}

// method2
var reader = fs.createReadStream('in.txt');
var writer = fs.createWriteStream('out.txt');
reader.pipe(writer);

总结: 内存在Node中的使用不是随心所欲的,但也不是完全不擅长,应该时刻注意资源不释放,内存泄漏,scope不明确等问题,特别是在exports和闭包的时候。如果需要用内存做缓存尽量使用内存数据库RedisMemcached

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: