vue通过路由跳转页面,每个页面都有多个echars图表,主要是折线图,数据通过websocket实时返回,这样浏览器内存会持续溢出,导致浏览器奔溃,页面调转内存也会增加,clear不起作用,dispose的话会报错getWidth获取不到实例,请大神们看看有啥好的办法

解决方案 »

  1.   

    1、是 echarts 吧,
    2、一个页面上多个,有多少? 
    3、这是股票软件?,要求实时的么?
    4、既然使用websocket,是建立了多个客户端的链接么? 不是一个连接,为多个折线图提供服务?
    5、干掉你浏览器的不是echarts ,而是 ws 对象,这玩意资源比较高。
      

  2.   

    一个页面最多四五个echars图,是实时的,有一个公共的ws连接,也有单独的连接,单独的router跳页后就关闭了,公共的一直在跑。都是折线图,时间一长浏览器就奔溃了  然后公共的ws就死了。
      

  3.   

    这个问题应该在数据处理这块,我赞同1楼的观点,之前处理过几十万条数据 4个echarts图都没有问题。
      

  4.   

    我把echars的代码注释掉,接收ws的返回值,监控浏览器的内存,内存没有问题,所以问题应该是echars数据处理上,之前的数据清理不掉的原因,清理的时候 vue只是在页面销毁之前clear()数据就可以了吧
      

  5.   


    是你代码的数据处理问题,和echarts无关,建议检查下代码逻辑。有个验证方法供参考:把websocket的onmessage里触发echart绘图的操作逻辑注释掉,如果此时浏览器照样崩溃,那100%确定就是你代码的问题。