最近我一直在优化 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();
}
};
记忆时间线屏幕:
如您所见,它在前 10 秒内需要收集大量内存!
2)创建局部变量而不是修改全局变量:
代码保持不变,唯一的变化是在循环中添加关键字“var”。globalVariable = Math.random(); 变为 var localVariable = Math.random();
记忆时间线屏幕:
如您所见,内存使用量非常低,前 10 秒仅增加了约 0.1MB。
差别真的很大!我现在无法检查它,但我被告知在两个示例中的 Firefox 中,两种情况的内存使用情况几乎相同。
任何人都可以解释我,或指出我解释它的资源吗?或者任何人都可以建议我如何修改全局变量以不增加使用的内存?