Vin*_*nce 25 javascript optimization garbage-collection memory-leaks requestanimationframe
我正在使用Chrome Dev Tools v27中的时间轴分析以下代码的内存使用情况.
<!DOCTYPE html>
<html>
<head>
<meta http-equiv='content-type' content='text/html; charset=UTF-8' />
<title>RAF</title>
</head>
<body>
<script type='text/javascript' charset='utf-8'>
var frame = function() {
window.webkitRequestAnimationFrame(frame);
};
window.webkitRequestAnimationFrame(frame);
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
注意这很简单.但最终我看到一个牙齿图案出现,表明垃圾收集器正在回收内存.

raf是否默认创建垃圾对象?有什么方法可以避免这种情况吗?谢谢.

我发现了以下内容:如果您将 RAF 功能更改为两个类似“乒乓”的功能,您会得到更少的垃圾。您无法避免第一次初始“大 GC”,但之后您只会看到大约 50kb 的小 GC,而不是 700kb-1mb GC。代码如下所示:
<script type='text/javascript' charset='utf-8'>
window.frameA = function() {
window.webkitRequestAnimationFrame(window.frameB);
};
window.frameB = function() {
window.webkitRequestAnimationFrame(window.frameA);
};
window.webkitRequestAnimationFrame(window.frameA);
</script>
Run Code Online (Sandbox Code Playgroud)
我想这是你在 Chrome 中能做的最好的事情。我注意到在 FF 中,gc 间隔或内存几乎没有变化,所以它可能与 chrome 调试内容有关(有关更多详细信息,请参阅上面链接的 chrome 错误报告)。但是,在像这样部署 RAF 时,我注意到我自己的游戏有所改进 - 真见鬼,我需要能够在没有人工 GC 的情况下对其进行调试,这在普通用户的机器上是不会发生的。
| 归档时间: |
|
| 查看次数: |
3478 次 |
| 最近记录: |