JavaScript 冻结/崩溃在 Chrome 中

JavaScript freezing/crashing in Chrome

本文关键字:Chrome 崩溃 冻结 JavaScript      更新时间:2023-09-26

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

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

分析没有发现任何异常。

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

附带说明一下,这个例子确实展示了 Math.random() 是如何真正不那么随机的。

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

  1. 不要计算每次迭代中的大小
  2. 使用超时而不是冻结间隔。
  3. 对地板使用按位运算符

分析没有发现任何异常。

Chrome Profiler 不适用于 WebWorkers、AFAIK。根据与保罗爱尔兰人的对话:

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

附带说明一下,这个例子确实展示了 Math.random() 是如何真实的。 不是那么随机。

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

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

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

禁用沙盒:1.右键单击谷歌浏览器桌面图标。2. 选择属性。3. 单击"目标">快捷方式。4. 添加"--无沙盒"5. 单击"应用"|"还行。6. 下载并安装僵尸软件修复。7. 检查并解决检测到的冲突。

禁用插件:1. 在地址栏中输入"关于:插件"。2. 按回车键。3. 禁用列表页面中显示的所有插件。

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

谢谢和问候。

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