【发布时间】:2014-06-27 11:29:29
【问题描述】:
我使用 node.js 每秒读取一张图片。这个想法是稍后将其推送到网络浏览器,使其成为一个简单的流。代码如下:
var fs = require("fs");
var intervalTimerObj;
function startStream() {
if(!intervalTimerObj) {
intervalTimerObj = setInterval( updateStream , 1000);
}
}
function updateStream(){
fs.readFile( __dirname + "/pic.jpg", function(err, image) {
});
}
startStream();
运行上面的代码时,我的内存很快就被填满了,我似乎遇到了内存泄漏。 我加载的图像文件越大,填满的速度就越快。
我做错了什么?有没有办法“释放”图像变量?我试过把它归零。
【问题讨论】:
-
在
fs.readFile回调中完成读取图像后,不要使用setInterval更新流。最好先读一张图片,然后如果你真的需要 1000 毫秒的间隔来使用setTimeout开始下一次阅读 -
刚刚尝试使用 setTimeout 代替。仍然不断窃取我所有的记忆
-
你为什么要每 1000 毫秒做一次呢?
-
这个想法是每秒捕获一张图片,然后通过 socket.io 将其推送到网络浏览器
标签: javascript node.js file-io memory-leaks