前言
最近使用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());