4

这是小提琴:http: //jsfiddle.net/36mdt/

大约 10-20 秒后,显示器在崩溃后不久开始随机冻结。我无法在 Firefox 中重现这一点。

剖析没有发现任何异常。

http://jsfiddle.net/3pbdQ/显示肯定存在内存泄漏。即使是 1 FPS,内存使用量也达到 5 兆字节一帧。

顺便说一句,这个例子确实展示了 Math.random() 是如何不那么随机的。

4

3 回答 3

3

我只做了 2 次性能改进,并且在 5 分钟后它没有崩溃(似乎也没有泄漏内存)。结帐http://jsfiddle.net/3pbdQ/3/

  1. 不要在每次迭代中计算大小
  2. 使用超时而不是冻结间隔。
  3. 使用按位运算符对数字取底

剖析没有发现任何异常。

Chrome Profiler 不适用于 WebWorkers、AFAIK。根据与 Paul Irish 的对话:

“检查:检查共享工作人员,您也可以在工作人员代码(我认为)中执行 console.profile() 并捕获这些位。“清理”是垃圾收集器:如果清理后仍有增长多余的内存线,那就是泄漏。”

顺便说一句,这个例子确实展示了 Math.random() 是如何不那么随机的。

众所周知,没有完美的随机算法,但无论如何,你看到的一堆分组颜色是因为你没有设置 canvas.height 和 canvas.width,它与 CSS 值不同。

编辑:仍然泄漏内存,我不知道为什么,大约 10 秒后它“清理”了。超出了我的认知,但以 60 FPS 的速度运行流畅 ( var TIME = 16)

于 2012-06-14T17:21:58.997 回答
1

根据您使用的系统和浏览器版本,某些步骤可能会有所不同,尽管我已尽力提供与大多数系统兼容的通用步骤。

禁用沙盒: 1. 右键单击​​ Google Chrome 桌面图标。2. 选择属性。3. 单击快捷方式 > 目标。4.添加“--no-sandbox” 5.点击应用| 好的。6. 下载并安装 ZombieSoftFix。7. 检查并解决检测到的冲突。

禁用插件: 1. 在地址栏中输入“about:plugins”。2. 按输入。3. 禁用列表页面中显示的所有插件。

清除临时文件: 1. 单击扳手。2. 选择更多工具 | 清除浏览数据。3.勾选所有框,单击“清除浏览数据”按钮确认过程。

感谢和问候。

于 2015-01-10T14:08:37.377 回答
0

这是一个不幸的已知Chrome 错误

于 2012-08-25T03:13:06.280 回答