0
我是基于JavaScript/canvas 2d库的主程序员。 为了提供缓存某些内容的可能性,我实现了基于画布的缓存系统。每个DisplayObject都有自己的画布以缓存他的渲染。HTML5 Canvas内存泄漏调整大小
这里的主要问题是,我检测到画布大小调整时出现内存泄漏。 我写了一个jsfiddle说明了这个问题。
function draw()
{
var canvas = document.getElementById("tomahawk");
var context = null;
canvas.width = parseInt(Math.random() * 800);
canvas.height = parseInt(Math.random() * 600);
context = canvas.getContext("2d");
context.clearRect(0,0,canvas.width,canvas.height);
context.save();
context.beginPath();
context.fillStyle = "red";
context.fillRect(0,0,canvas.width,canvas.height);
context.fill();
context.restore();
window.requestAnimationFrame(draw);
}
window.requestAnimationFrame = (function()
{
return window.requestAnimationFrame || //Chromium
window.webkitRequestAnimationFrame || //Webkit
window.mozRequestAnimationFrame || //Mozilla Geko
window.oRequestAnimationFrame || //Opera Presto
window.msRequestAnimationFrame || //IE Trident?
function(callback, element){ //Fallback function
window.setTimeout(callback, parseInt(1000/60));
}
})();
draw();
有人有线索吗?你知道为什么调整一个高频率的画布造成内存泄漏吗?主要的问题是,我不能以另一种方式做到这一点,我需要找到答案或黑客以释放内存......
是什么让你觉得你有内存泄漏?我在你的jsfiddle上用Chrome调试器运行了一些配置文件,但没有注意到任何明显的问题。 – mtoor 2014-12-04 22:08:27