微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript-Highcharts中的大量内存泄漏-创建和销毁缺少内存?

使用Highcharts为自己的家庭网络构建小型Web应用程序(一些天气数据,功耗等)时,我遇到了一个很大的问题.

我的用例是,我有一个运行24/7的webapp,可以在一个简单的视图中显示一些关键数据,只是数字;-)
当我单击此数字/平铺之一时,将显示带有图表的详细信息页面.我实现了一种自动细节机制,该机制每X秒滚动一次详细页面.

我的问题是,我单击图块时创建了Highcharts-Charts,当隐藏图块时,使用’.highcharts().destroy();’销毁了图表,然后销毁了对话框.

大约4到5个小时后,浏览器崩溃(‘Oh Snap …’).
我分析了网站的内存使用情况,它看起来像这样:

enter image description here

我很确定,那不应该像那样!如您所见,以下区域中的’c’变得越来越难!

所以这是我创建图表的地方:

if(typeof $(bindTo).highcharts() !== 'undefined'){
      $(bindTo).highcharts().destroy();
}

// get here data with jquery from backend [jquery caching disabled]

var chart = $(bindTo).highcharts({
......
});

因此,这里是chrome-profiler的另一个细节:

enter image description here

我只是选择了这些蓝色条形之一(这意味着,在分析过程[?!]结束时,此处创建的该对象仍然存在).似乎该蓝色条由该’c’对象组成,并且属于Highcharts.

我究竟做错了什么?这是已知行为吗?我该如何解决
(是的,也许我可以只创建一次每个图表并更新数据,但这是我的最后决定;-))

谢谢

解决方法:

好的,

我自己解决了这个问题.

经过长时间的调试,我发现在使用Highcharts的销毁方法之前,我的模态对话框已与DOM分离.
因此,将销毁方法放在模态对话框的隐藏侦听器中即可.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐