以下代碼似乎以webkit(移動Safari & konqueror)的相當驚人的速度泄漏內存。我意識到測試用例可以被重寫來重新使用畫布而不是創建一個新的畫布,但是我想知道爲什麼下面的內容不起作用。任何洞察力將不勝感激。如何在畫布被破壞時製作webkit免費畫布上下文內存
<html>
<head>
<script>
function draw() {
var holder = document.getElementById("holder");
holder.innerHTML = "<canvas id=cnv height=250 width=250>";
var ctx = document.getElementById("cnv").getContext("2d");
ctx.beginPath();
ctx.moveTo(50,50);
ctx.lineTo(Math.random()*100,Math.random()*100);
ctx.stroke();
}
function start() {
setInterval(draw, 100);
}
</script>
</head>
<body onload="start()">
<div id="holder"></div>
</body>
</html>
+1,每100ms創建一個新的畫布看起來像是主要泄漏... – acm 2011-02-03 10:37:32
我意識到創建一個新元素每秒10次是低效的 - 這是測試代碼來追蹤內存泄漏,而不是生產代碼。也就是說,我可以控制內容,但不是加載它的應用程序,這使得重新使用現有畫布有點不方便。即使使用延遲代碼,WebKit也不應該像這樣泄漏內存。 – Dan 2011-02-03 16:20:26