javascript - 仅在 Chrome 中使用 addPoints() 的 HighCharts/HighStock 内存泄漏

标签 javascript google-chrome memory-leaks highcharts

HighStock 网站上的“Dynamically updated data”演示似乎在当前版本的 Google Chrome (24.0) 中泄漏了内存。我已经在 Mac OS X 10.8.2 和 Windows 7(64 位)上试过了。我还在 OS X 上尝试了 Safari 6.0.2,在 Windows 7 上尝试了 IE9 和 Firefox 18。泄漏似乎只发生在 Chrome 中,而且总是发生。

鉴于这是一个相当出色的演示,我原以为它会运行良好。但是如果有足够的时间,它会在 Chrome 中崩溃,并显示“Aw, Snap”错误页面。在编写的演示中可能需要很长时间,但如果您单击 jsFiddle 链接并将 setInterval() 调用更改为 100 毫秒而不是 1000 毫秒,泄漏将相当明显。具有多个系列和大量数据的真实应用程序可能会在几分钟内使 Chrome 崩溃。

请注意,在不断添加数据的同时,addPoints() 中的“shift”参数始终为真,这意味着旧数据将以同样快的速度被丢弃。所以内存使用量应该相当稳定——在 Chrome 以外的浏览器上,它是。

我不确定如何判断这是 Chrome 错误还是 HighCharts 错误。而且我还没有找到有用的解决方法。对任一方面的结论性答案将不胜感激。

最佳答案

受到 Mark 评论的启发,我决定尝试各种不同版本的东西。首先,我尝试了 jQuery 和 HighStock 的前沿版本。 Chrome 24(稳定)仍然泄漏。然后我尝试了 Chrome 23,因为它适用于 Fedora 上的 Mark,但它仍然在 Mac OS 上泄漏。

然后我尝试了 Chrome Canary 版本 26.0。它有效,没有泄漏!它展示了典型的垃圾收集模式,即每隔几秒累积几十兆字节的超额内存使用量,然后回落到“正常”状态。所以这是个好消息。坏消息是 Chrome Beta 25.0 仍然泄漏。因此,如果 HighCharts 的其他用户在接下来的几个月内遇到此问题,他们将需要使用“不稳定”版本的 Chrome,或者只是使用不同品牌的浏览器。

关于javascript - 仅在 Chrome 中使用 addPoints() 的 HighCharts/HighStock 内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14784795/

相关文章:

具有混合值类型的 JavaScript 数组排序 - 寻找合适的比较函数

html - Chrome float 左问题

javascript - 如何通过 PostMessage 将 Serviceworker 响应主体 ReadableByteStream 作为 Blob 返回?

php - 准备好的语句可能会导致内存泄漏?

Haskell 空间泄漏

linux - apache、tomcat 和 mod_jk 和 mysql 的内存泄漏

javascript - 滚动到时播放 HTML5 视频

javascript - 当叠加层也具有不透明的黑色背景时,黑色不可见

javascript - element.requestFullscreen() API 中的 'initiated by a user gesture.' 是什么意思?

javascript - 迭代对象的属性