如何通过< canvas>释放已分配的内存?在以下示例中:
<html>
<head>
</head>
<body id="body">
<canvas id="canvas" width=3000 height=2000/>
<script>
var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");
ctx.fillText("hao ar iu?", 20, 20);
</script>
</body>
</html>
我尝试将 var canvas 设置为null(canvas = null),删除画布(删除画布)或动态创建画布并将其附加到“文档”根目录后删除它方式:
<div onclick=reload()>CLICK TO RELOAD PAGE</div>
<script>
function reload(){
body.removeChild(canvas);
location.reload();
}
</script>
在我的浏览器占用过多的CPU RAM内存之前,每次重新加载时,分配的内存都会变得越来越大。有时浏览器会崩溃。垃圾收集器有时会清除一些变量。但它占用了太多的内存。我使用Chrome版本25.是否有任何方法可以释放&lt; canvas&gt;记忆或引起早期垃圾收集?
答案 0 :(得分:-1)
您是否尝试过删除JavaScript运算符?
delete canvas;
否则你可以尝试一下这对我有用:
canvas.parentNode.removeChild(canvas);
您需要确保删除对画布的每个引用,甚至是DOM或任何其他对象的引用,以避免内存泄漏。
PS:忘了提你的画布尺寸很大。保持画布尺寸尽可能小,以减少内存使用并增加fps。PS2:关闭路径将有助于避免内存泄漏