【发布时间】:2015-03-21 17:13:34
【问题描述】:
来自What do the return values of node.js process.memoryUsage() stand for? RSS 是驻留集大小,进程内存中保存在 RAM 中的部分 (此进程在 RAM 中保留了多少内存,以字节为单位)示例中使用的“text.txt”文件大小为 370KB(378880 字节)
var http = require('http');
var fs = require('fs');
var express = require('express');
var app = express();
console.log("On app bootstrap = ", process.memoryUsage());
app.get('/test', function(req, res) {
fs.readFile(__dirname + '/text.txt', function(err, file) {
console.log("When File is available = ", process.memoryUsage());
res.end(file);
});
setTimeout(function() {
console.log("After sending = ", process.memoryUsage());
}, 5000);
});
app.listen(8081);
所以在应用引导程序上:{ rss: 22069248, heapTotal: 15551232, heapUsed: 9169152 }
在我对“/test”提出 10 次请求后,情况是:
When File is available = { rss: 33087488, heapTotal: 18635008, heapUsed: 6553552 }
After sending = { rss: 33447936, heapTotal: 18635008, heapUsed: 6566856 }
所以从应用程序 boostrap 到 10nth 请求 rss 增加了 11378688 字节,大约是 text.txt 文件大小的 30 倍。
我知道在将结果写回客户端之前,此代码会将每个请求的整个 data.txt 文件缓冲到内存中,但我希望在请求完成后,“text.txt”占用的内存将被释放? 但事实并非如此?
第二如何设置节点进程可以消耗的最大RAM内存大小?
【问题讨论】:
-
所以我注释掉了
fs.readFile部分,这些是日志,第一个 reqAfter sending = { rss: 31162368, heapTotal: 18862880, heapUsed: 10961672 }10th reqAfter sending = { rss: 31596544, heapTotal: 18862880, heapUsed: 11393584 }就像 424kb,非常有线,我也在寻找答案。编辑:找到这个stackoverflow.com/questions/16441601/…
标签: node.js