4
回答
echarts在IE中内存释放情况
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   

@Kener-林峰 你好,想跟你请教个问题:是这样的,在使用Echarts过程中.在IE浏览器的情况下,不管是8还是最新的11,Echarts创建图形后生成的canvas都没有很好的释放掉内存,不听刷新一个Echarts图形的页面,浏览器占有内存会一直提升,根据API调用clear()和dispose()函数,内存也没有得到释放.想问一下有没有办法

举报
顽Shi
发帖于4年前 4回/4K+阅
共有4个答案 最后回答: 4年前

能看看你的代码吗?是怎么init怎么dispose的?我用echarts官网的例子,refresh了一段时间得到的内存占用情况,没发现异常啊

@Kener-林峰  可以的,下面是我的代码

require(
  [
      'echarts',
      'echarts/chart/line',
      'echarts/chart/bar',
      'echarts/chart/pie'
  ],
  function(ec) {
      init(ec);
  }
)	

function init(ec){
    myChart = ec.init(document.getElementById('main'));
    myChart2 = ec.init(document.getElementById('main2'));
    ajaxreturn1(bl) //bl就是一个二维数组,存放我要显示的数据
}

function ajaxreturn1(bl){
    //bl是二维数组,存放数据,类似y1array,y2array都是数组,为了看着方便我把数据处理的步骤删掉了

    var m1 = new myoption();
    m1.legend.data = ['a'];
    m1.xAxis[0].data = xarray;
    
    m1.series.push(new Object());
    m1.series[0].name = 'a';
    m1.series[0].data = y1array;
    
    myChart.setOption(seto(m1,"line"),true);
    
    var m2 = new myoption();
    m2.legend.data = ['a','b'];
    m2.xAxis[0].data = xarray;		
    
    m2.series.push(new Object());
    m2.series[0].name = 'a';
    m2.series[0].data = y2array;
    
    m2.series.push(new Object());
    m2.series[1].name = 'b';
    m2.series[1].data = y3array;

    myChart2.setOption(seto(m2,"line"),true);

    myChart.clear();
    myChart2.clear();
    myChart.dispose();
    myChart2.dispose();
    delete myChart;
    CollectGarbage();
    delete myChart2;
    CollectGarbage();	
}

    代码简化了一点数据处理,基本上按照官网的标准,稍微整合改变了一下结构而已.在Chrome下内存控制很好,但是IE下不停递增内存.

    

顶部