当我使用以下代码复制文件的5mb时,我有一个内存" test.mp4"到文件" test1.mp4"响应浏览器的请求。
附加代码创建一个缓冲区,用于存储文件内容" test.mp4"复制时但是,我发现在浏览器发出每个请求后,nodejs进程会占用~10mb。
我知道使用流和管道更适合任务,但我真的很好奇如何使用缓冲区实现任务。
请帮我找出问题的根本原因。
提前谢谢!
var
fs = require("fs"),
http = require("http"),
os = require("os");
var server = http.createServer(function(req, res){
console.log("The request has been made");
res.writeHead(200, {"Content-Type": "text/html"});
fs.open("test.mp4", "r", function(err, fd){
var buf = new Buffer(5000000);
console.log("Free memory "+ os.freemem());
fs.read(fd, buf, 0, 5000000 ,0, function(err, read){
fs.writeFile("test1.mp4", fd, function(){
fs.close(fd);
buf = null;
});
res.write("The request has been fulfilled");
res.end();
});
});
});
server.listen(80);