尝试了许多方法来强制GC清理内存但没有成功。 最重要的是:
buf.remove(); // does not exist
delete buf; // does not deallocate the memory
buf = null; // removing references - no result
此例程中出现问题:
function loadImage(url, finish){
var Image = Canvas.Image;
request.get({url:url, encoding:null}, responseImage);
function responseImage(err,res,body) {
if(err){
return finish();
}
var image = new Image();
image.onerror = function(e) {
finish();
};
image.onload = function(){
finish(image);
};
image.src = new Buffer(body, 'binary');
}
}
loadImage("http://...", function(image){
if(image){
canvasContext.drawImage(image,0,0,100,100 );
}
});
答案 0 :(得分:1)
循环创建150个图像对象后,我得到了2 gig的内存。甚至在渲染过程完成后为所有它分配null仍然给我相同的内存泄漏结果。所以我深入了解image.cc并发现解决方案很简单。只需将图像源重新指定为null,图像对象将自行清理然后我得到了我的记忆:)(它可能会触发onerror事件,因为图像加载没有任何内容)
var img = new Image;
img.onload = function() {
//do anything you want ...
//clean it by change src to null
img.src = null;
};
img.src = data;