我正在使用dygraphs在我正在开发的网络交易平台中生成基于画布的股票图表 - source here。数据通过WebSocket连接传递到Web客户端。
如果查看源代码,您会看到我将图表的数据附加到数组chartData
,因为数据通过套接字(第100行)传入,然后我正在通过通过updateOptions(第111行)将数据发送到dygraphs图表,使图表使用最新数据重绘自己。
这很好用,效果很好。但是,大约一个小时后,当图表中附加了10,000个数据项时,页面(我正在使用Chrome)崩溃,可能是由于内存使用情况。数据存储在图表和数组(chartData)中,所以我想这对于一个网页来说是一块很好的内存。另外,我正在使用ExtJS,这是一种猪:)
有没有人有关于如何减少图表内存占用的建议?
答案 0 :(得分:1)
除了明显的“不要使用Ext”之外,我可以提供几个猜测,但没有确定的。
如果我假设使用的大部分数据不在图表的当前可见部分中,那么您可以简单地删除它。有足够的数据填充图表后,每次添加n条记录到最后,从头开始拼接n条记录。
如果数据进入速度快于您可以轻松渲染(不太可能但可能),请交换几个图像:将数据收集到一个组中。在某个时间间隔内,将该组克隆到渲染区域,然后使用该组渲染新图表。渲染完成后,将其放在DOM中,丢弃旧的。
但只是删除旧数据可能会解决您的许多问题......
...特别是如果你摆脱了Ext。