Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 免费分配者<;画布/>;页面上的内存重新加载_Javascript_Html_Memory Leaks - Fatal编程技术网

Javascript 免费分配者<;画布/>;页面上的内存重新加载

Javascript 免费分配者<;画布/>;页面上的内存重新加载,javascript,html,memory-leaks,Javascript,Html,Memory Leaks,在以下示例中,如何通过释放已分配的内存: <html> <head> </head> <body id="body"> <canvas id="canvas" width=3000 height=2000/> <script> var canvas = document.getElementById("canvas"); var ctx = canvas.getContex

在以下示例中,如何通过释放已分配的内存:

<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=document.getElementById(“canvas”);
var ctx=canvas.getContext(“2d”);
ctx.fillText(“hao ar iu?”,20,20);
我尝试将var canvas设置为null(canvas=null)、删除canvas(delete canvas)或动态创建canvas并将其附加到“document”根目录,然后以这种方式将其删除:

<div onclick=reload()>CLICK TO RELOAD PAGE</div>
<script>
  function reload(){
    body.removeChild(canvas);
    location.reload();
  }
</script>
单击以重新加载页面
函数重载(){
body.removeChild(画布);
location.reload();
}

没有任何变化,分配的内存会随着每次页面重新加载而越来越大,直到我的浏览器占用了太多的CPU RAM内存。有时浏览器会崩溃。有时垃圾收集器会清除范围外的一些变量。但是它占用了太多的内存。我使用Chrome版本25。是否有任何方法可以释放内存或引发早期垃圾收集?

您是否尝试过JavaScript操作符delete

delete canvas;
否则,您可以尝试以下适合我的方法:

canvas.parentNode.removeChild(canvas);
您需要确保删除对画布的所有引用,即使是DOM或任何其他对象的引用,以避免内存泄漏

附言:忘了提到你的画布尺寸很大。使画布大小尽可能小,以减少内存使用并增加fps


PS2:关闭路径将有助于避免内存泄漏

是的,正如您在我的帖子中看到的那样,我尝试了您列出的所有解决方案。对我来说,它们似乎都不可靠。你说的“封闭你的道路”是什么意思?我不画动画,所以在我的情况下,大尺寸不会影响性能。这不是delete的用途。