gpt4 book ai didi

javascript - 为什么修改全局变量会增加 Chrome 中的内存使用量

转载 作者:IT王子 更新时间:2023-10-28 23:36:28 25 4
gpt4 key购买 nike

最近我一直在优化 javascript 代码以制作 HTML5 游戏,尤其是针对移动浏览器。我从比较引擎开始,逐渐简化比较的代码,我得到了一些我不理解的东西。

我注意到在 Chrome 中(所以我猜是所有基于 webkit 的浏览器)修改全局变量会导致使用的内存增加。让我给你举两个例子:

1) 修改全局变量:

代码:

var globalVariable = 0;

var fps = 60;
window.onload = init;

function init () {
setInterval (loop, 1000/fps);
};


function loop (){

for (var i = 0; i < 1000000; i++) {
globalVariable = Math.random();
}
};

内存时间线屏幕:Memory 1

如您所见,它在前 10 秒内需要收集大量内存!

2)创建局部变量而不是修改全局变量:

代码保持不变,唯一的变化是在循环中添加关键字“var”。globalVariable = Math.random();变为 var localVariable = Math.random();

内存时间线屏幕:Memory 2

如您所见,内存使用量非常低,前 10 秒仅增加了大约 0.1MB。

差别真的很大!我现在无法检查它,但我被告知在两个示例中的 Firefox 中,两种情况的内存使用情况几乎相同。

谁能解释我,或者指出我解释它的资源?或者任何人都可以建议我如何修改全局变量以不增加使用的内存?

最佳答案

(首先,关于“全局”变量的快速吐槽。Javascript 中没有全局变量,有作用域,包括窗口级作用域)

但是,答案是在 Javascript 的函数中从另一个 作用域 访问变量会将其提升到当前作用域。 Here's a fun explanation of the effect.

关于javascript - 为什么修改全局变量会增加 Chrome 中的内存使用量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14074176/

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