Node.js的 - 可能的http服务器内存泄漏(node.js - possible http

2019-08-01 13:21发布

版本的NodeJS:0.8.8

这里是服务器:

var http = require('http');
var port = 1338;
var ip = "127.0.0.1";    

http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hi there\n');
}).listen(port, ip);    

客户端(PHP脚本)卷发远POST请求上述服务器。 POST是一个字符串(JSON),大小约为4兆字节。

正如你所看到的,服务器不做任何处理已发布数据。 为了调试,我打消了我所有的代码,并回到了Hello World示例,什么也不做:)
当我看看节点的过程(在活动监视器,Mac应用程序完成)的内存使用情况 - 它报告节点服务器内存使用率是歌厅为每个请求较大。
所以20名的请求或等以后内存使用量增加了一倍。

Answer 1:

这是不是一个错误。 这是正常的,预期的行为。

Node.js的是基于JavaScript的,这是一个垃圾收集的语言。 总之,发生了什么,是内存不释放马上,而是需要一定的时间,直到内存被释放(如垃圾收集)。 V8(其节点使用)实际上有一个很聪明的垃圾收集器的是“确保快速对象分配,短垃圾收集暂停,和无记忆碎片”。

为了证明这种行为对你,我跑在Windows上的node.js 0.8.8上面的脚本和轰炸大HTTP POST请求的服务器。

进程浏览器显示以下内存使用情况图表:

正如你所看到的,内存使用量上升,直到某一极限触发垃圾收集。 清理后,使用复位并开始再度攀升,直到下一个触发。



文章来源: node.js - possible http server memory leak