gpt4 book ai didi

javascript - 由 内存在页面重新加载时免费分配

转载 作者:太空狗 更新时间:2023-10-29 15:20:00 25 4
gpt4 key购买 nike

在下面的示例中,我如何释放 分配的内存:

<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),删除 Canvas (delete canvas) 或动态创建 Canvas 并将其附加到“文档”根目录,然后删除它方式:

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

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

最佳答案

您尝试过 JavaScript 运算符 delete 吗?

delete canvas;

否则你可以试试这个对我有用的:

canvas.parentNode.removeChild(canvas);

您需要确保删除对 Canvas 的所有引用,甚至是 DOM 或任何其他对象对 Canvas 的引用,以避免内存泄漏。

PS:忘了说你的 Canvas 尺寸很大。使 Canvas 大小尽可能小,以减少内存使用并提高 fps。

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

关于javascript - 由 <canvas/> 内存在页面重新加载时免费分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15197527/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com