我有一个使用javascript websockets来获取和呈现实时数据的web应用程序。问题是,一旦建立了websocket连接,我的浏览器的内存使用率就以MB为单位逐渐增加。 关闭标签后,内存使用率下降的幅度与其增加的幅度相同。 我也将通过websockets接收的数据呈现到google图表中,并且每2秒收到一次数据,触发使用新数据重新渲染图表。这可能是问题吗?还是websockets导致内存使用量增加? / p>
答案 0 :(得分:0)
如果不了解更多关于您的应用程序的信息,并且没有看到您的代码并可能按如下所述对其进行检测,我们将无法确切地知道导致此问题的原因。
这不是webSockets的普遍问题。 webSockets可以打开并接收数据多年,而不会导致内存增加。
这些问题可以通过以下方法解决:
有关进行内存使用调试的详细说明,请参见Chrome中的How to Record Heap Snapshots。实际上,没有什么比我们可以根据您针对特定案例的限制信息告诉您的更具体了。
通过不连接webSocket,然后通过运行setInterval()
并反复渲染图表来模拟从webSocket获取数据,您可以完全从等式中消除webSocket。至少可以消除一些可疑代码。
仅供参考,以下是另外几篇文章:
Memory leak using google charts with ajax
答案 1 :(得分:0)
我发现了问题所在。 感谢@ jFriend00提供指导。
在懒洋洋地阅读博客/帖子/文章后,我认为问题出在websocket,然后在此发布了问题。
我重新检查我的代码,发现问题在于每秒重新渲染图表;我正在创建图表的新实例以每秒渲染一次;我希望GC能够完成清理旧图表的工作图表,但事实并非如此。
我修改了代码以清除现有图表,并使用新数据和Voila进行渲染!我的内存消耗恢复正常。