echart和定时器实现图表轮播导致内存上涨问题

264 阅读1分钟

前言

最近使用echart实现了一个图表轮播的功能,通过定时器每隔10秒切换一次数据,刷新echart的数据,实现数据轮播。但是在测试过程中,发现有内存泄漏问题。

解决方案

虽然echart官方网站说了,建议用setOption方法来重置你的图表样式或数据,但是实际测试来看,并不好用,内存还是在上涨。

又使用了clear方法,每次塞数据之前先clear掉之前的数据,这个方式并不会清除实例,只是重新绘制图形,实践来看,也并不好用,内存还是会上涨。

最后使用了dispose方法,即每次init图表之前先判断下是否有echart实例,有则先dispose下,彻底清除,内存稳定

关键代码

const chartDOM = this.dom.querySelector(`.echart`);
let chart = window.echarts.getInstanceByDom(chartDOM);
if (chart) {
      chart.dispose();
}
chart = window.echarts.init(chartDOM);
// echarts填入数据 
chart.setOption(this.getChartOption());