如何减少dygraphs图的内存占用量

时间:2014-01-29 18:55:30

标签: javascript memory dygraphs

我正在使用dygraphs在我正在开发的网络交易平台中生成基于画布的股票图表 - source here。数据通过WebSocket连接传递到Web客户端。

如果查看源代码,您会看到我将图表的数据附加到数组chartData,因为数据通过套接字(第100行)传入,然后我正在通过通过updateOptions(第111行)将数据发送到dygraphs图表,使图表使用最新数据重绘自己。

这很好用,效果很好。但是,大约一个小时后,当图表中附加了10,000个数据项时,页面(我正在使用Chrome)崩溃,可能是由于内存使用情况。数据存储在图表和数组(chartData)中,所以我想这对于一个网页来说是一块很好的内存。另外,我正在使用ExtJS,这是一种猪:)

有没有人有关于如何减少图表内存占用的建议?

1 个答案:

答案 0 :(得分:1)

除了明显的“不要使用Ext”之外,我可以提供几个猜测,但没有确定的。

如果我假设使用的大部分数据不在图表的当前可见部分中,那么您可以简单地删除它。有足够的数据填充图表后,每次添加n条记录到最后,从头开始拼接n条记录。

如果数据进入速度快于您可以轻松渲染(不太可能但可能),请交换几个图像:将数据收集到一个组中。在某个时间间隔内,将该组克隆到渲染区域,然后使用该组渲染新图表。渲染完成后,将其放在DOM中,丢弃旧的。

但只是删除旧数据可能会解决您的许多问题......

...特别是如果你摆脱了Ext。