nodejs:读取文件时使用Buffer会导致内存泄漏

时间:2017-01-28 20:47:35

标签: node.js memory-leaks buffer

当我使用以下代码复制文件的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);

0 个答案:

没有答案