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

时间:2013-02-09 03:58:08

标签: javascript google-chrome memory-leaks highcharts highstock

" Dynamically updated data" HighStock网站上的演示似乎在当前版本的谷歌浏览器(24.0)中泄漏内存。我在Mac OS X 10.8.2和Windows 7(64位)上尝试过它。我还试用了OS X上的Safari 6.0.2,以及Windows 7上的IE9和Firefox 18.漏洞似乎只发生在Chrome中,而且总是会发生。

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

请注意,在连续添加数据时," shift" addPoints()中的参数始终为true,这意味着旧数据被快速丢弃。所以内存使用量应该相当稳定 - 而且在Chrome以外的浏览器上,它就是。

我不知道该怎么判断这是Chrome还是HighCharts。我还没有找到有用的解决方法。对这两方面的结论性答案将非常感激。

1 个答案:

答案 0 :(得分:2)

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

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