JavaScript中的JavaScript冻结/崩溃

时间:2012-06-14 15:48:35

标签: javascript google-chrome canvas web-worker

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

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

分析显示没什么异常。

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

另外,这个例子真实地展示了Math.random()实际上是不是那么随机。

3 个答案:

答案 0 :(得分:3)

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

  1. 不计算每次迭代内的大小
  2. 使用超时而不是冻结间隔。
  3. 使用按位运算符来编号
  4.   

    分析显示没什么异常。

    Chrome Profiler无法与WebWorkers,AFAIK配合使用。根据与保罗爱尔兰人的谈话:

      

    “检查:检查共享工作者,也可以在工作程序代码(I THINK)中执行console.profile()并捕获这些位。”清理“是垃圾收集器:如果清理后有仍然是越来越多的过剩记忆,那就是泄密。“

      

    在旁注中,这个例子真实地展示了Math.random()是如何真实的   不是那么随意。

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

    编辑:仍在泄露内存,我不知道为什么,大约在10秒后“清理”。超过我的知识,但以60 FPS(var TIME = 16

    顺利运作

答案 1 :(得分:1)

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

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

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

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

谢谢&问候。

答案 2 :(得分:0)

这是一个不幸的,已知的Chrome bug