场景:要求一个柱状图柱子动态变化,将柱状图先正常渲染,渲染后执行面的定时任务,先将值清空再重新赋值原来的值(这种无聊的变化是产品要求的。说动起来炫一点)。
问题:如果浏览器停留在此页面时候,内存正常(谷歌 F12-->Memory), 但是如果将浏览器切换到其他标签页(假如打开一个百度,停留在百度页),内存会一直增长,直至崩溃
代码:
this.intervalId = setInterval(() => { let {myCharts} = this let optiOns= this.myCharts.getOption() let serData = JSON.parse(JSON.stringify(options.series)) // 把所有数据清空 for (let i = 0; i < serData.length; i++) { serData[i].data = null } myCharts.setOption({ series: serData }) setTimeout(() => { // 重新赋值 myCharts.setOption({ series: options.series }) }, 800) }, 6000) 在网上试了一个例子: https://echarts.baidu.com/examples/editor.html?c=gauge-car
在编辑框最下面改为
setInterval(function (){ option.series[0].data[0].value = 0; option.series[1].data[0].value = 0; option.series[2].data[0].value = 0; option.series[3].data[0].value = 0; myChart.setOption(option,true); setTimeout(function() { option.series[0].data[0].value = (Math.random()*100).toFixed(2) - 0; option.series[1].data[0].value = (Math.random()*7).toFixed(2) - 0; option.series[2].data[0].value = (Math.random()*2).toFixed(2) - 0; option.series[3].data[0].value = (Math.random()*2).toFixed(2) - 0; myChart.setOption(option,true); }, 800); },2000); 打开 f12 切走页面看内存。
问: 有知道原因的同学吗? 我这边一开始想的是内存释放的问题, 那页面激活和未激活为啥会不一样?
