Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 不了解内存使用/垃圾回收_Node.js - Fatal编程技术网

Node.js 不了解内存使用/垃圾回收

Node.js 不了解内存使用/垃圾回收,node.js,Node.js,我原以为我了解NodeJS中的内存使用/垃圾收集,但在运行非常简单的NodeJS http服务器时,我看不到我所期望的。我创造了尽可能小的脚本来展示我在做什么 根据我的理解,一旦变量/缓冲区超出范围,它们应该被垃圾收集,但我不认为会发生这种情况。我的缓冲区似乎被保留了下来,因此总的内存使用量一直在增长 示例如下: var http=require(“http”), args=process.argv.slice(2), 端口=编号(参数[0])?args[0]:8080 createServe

我原以为我了解NodeJS中的内存使用/垃圾收集,但在运行非常简单的NodeJS http服务器时,我看不到我所期望的。我创造了尽可能小的脚本来展示我在做什么

根据我的理解,一旦变量/缓冲区超出范围,它们应该被垃圾收集,但我不认为会发生这种情况。我的缓冲区似乎被保留了下来,因此总的内存使用量一直在增长

示例如下:

var http=require(“http”),
args=process.argv.slice(2),
端口=编号(参数[0])?args[0]:8080
createServer(函数(请求、响应){
console.log(Date()、request.url、process.memoryUsage().rss/1024/1024)
var s3url=http://hmn-uploads-eu.s3.amazonaws.com/yell-production/uploads/2016/01/BYC-Hero-Home-Small.jpg'
变量缓冲区=“”
get(s3url,函数(s3response){
s3response.on('data',函数(data){
缓冲区+=数据
})
s3response.on('end',function()){
响应写入(缓冲区)
答复:end()
})
} )
}).listen(parseInt(端口,10))

console.log(“运行在\n=>http://localhost:“+端口+”/\nCTRL+C至关机”)在内存使用超过某个阈值之前,NodeJS中的垃圾收集器不会启动。我发现下面这一页读起来很有趣:


本页介绍了几种诊断内存泄漏和堆使用情况的方法(包括公开垃圾收集器以便手动调用!)

运行更多请求,并查看操作系统测量的内存使用情况是否最终稳定。nodejs不一定将所有未使用的内存返回操作系统。它可以在内部释放,并在NodeJ中可用,以供将来分配,但不会返回给操作系统。