javascript – 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报告缓冲区的大小,v8假设它们很小,而不是释放它们.

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...