2013-03-04 63 views
5

我怎麼能免費通過<帆布>在下面的例子中分配的內存:免費分配由<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帆布空(帆布= NULL),以刪除畫布(刪除畫布)或動態創建畫布並將其附加到「文件」根,之後除去這種方式:

<div onclick=reload()>CLICK TO RELOAD PAGE</div> 
<script> 
    function reload(){ 
    body.removeChild(canvas); 
    location.reload(); 
    } 
</script> 

沒有什麼變化,所分配的存儲器克隨着每個頁面的重新加載,這個數字越來越大,直到我的瀏覽器佔用太多的CPU RAM內存。有時瀏覽器崩潰。有時垃圾收集器會清除範圍內的一些變量。但它佔用了太多的內存。我使用Chrome版本25.是否有任何方法來釋放內存或引發早期垃圾回收?

回答

-1

您是否嘗試過JavaScript操作符刪除?

delete canvas; 

否則,你可以試試這個爲我的作品:

canvas.parentNode.removeChild(canvas); 

你需要確保每一個參考由DOM或任何其他對象即使是那些除去你的畫布,以避免記憶泄漏。 PS:忘記提及您的畫布尺寸非常大。保持畫布大小盡可能小以減少內存使用量並增加fps。

PS2:關閉你的路會幫助避免內存泄漏

+0

是的,我做的嘗試所有上市的解決方案,你可以在我的文章閱讀。他們中沒有一個人似乎對我工作可靠。 「關閉你的小路」是什麼意思?我不會畫動畫,所以在我的情況下,大尺寸不會造成表現。 – 0xC0DEGURU 2013-05-15 07:58:06

+0

這不是應該使用的刪除。 – Isius 2014-03-07 04:31:42