Node.js的虚拟内存使用率很高

我们正在尝试设置Node.js + Socket.io。 我们最后的担心是内存使用。 我们正在启动我们简单的服务器(下面的代码),这个过程的虚拟内存使用是〜600 MB。

1000 6463 0.0 0.4 635816 19260 pts/1 Sl+ 12:51 0:00 node /home/data/server.js 

server.js

 var express = require('express'); var app = express.createServer(), io = require('socket.io').listen(app); app.listen(8000); io.set('flash policy port', 8001); io.enable('browser client minification'); // send minified client io.enable('browser client etag'); // apply etag caching logic based on version number io.set('log level', 1); io.set('transports', [ 'websocket' , 'flashsocket' , 'htmlfile' , 'xhr-polling' , 'jsonp-polling' ]); io.sockets.on('connection', function (socket) { socket.on('distribute', function (data) { if(typeof data.key == 'undefined' || (typeof data.key != 'undefined' && data.key != 'randomstringforsecurityreason')){ return false; } delete data.key; socket.broadcast.to(data.channel).emit('eat', data); }); socket.on('pukpuk', function(data) { if(typeof data == "string"){ socket.join(data); } else { for(var i in data) { socket.join(data[i]); } } }); }); 

这是正常的? 如此大的虚拟内存使用?

编辑:

好吧,我发现这很正常。 http://comments.gmane.org/gmane.comp.lang.javascript.nodejs/17482

是的,这是非常正常的。 节点不会经常释放缓冲区。 IIRC:他们必须从v8中释放出来,然后从节点的堆中释放出来,然后再回到操作系统,这里的东西很慢。

尝试下载一个允许你显式调用垃圾回收器的模块。 我怀疑节点没有报告缓冲区的大小,以V8,并认为他们是微小的,而不是释放他们。