日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > vue >内容正文

vue

关于echarts+vue频繁刷新的造成的内存增长问题

發(fā)布時間:2024/1/16 vue 48 coder
生活随笔 收集整理的這篇文章主要介紹了 关于echarts+vue频繁刷新的造成的内存增长问题 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

前言

關(guān)于解決echarts+ws多次數(shù)據(jù)刷新渲染,內(nèi)存增長溢出的嘗試。
記錄一下,便于下次使用有參考

方法

  1. 關(guān)閉echarts動畫
  2. tooltip的動畫設(shè)置為false。(echarts動畫會緩存,通過快照可以看出)
 tooltip: {
          axisPointer: {
            animation: false, //很重要!
          },
        },
  1. 單獨設(shè)置頻繁刷新的echarts dom,不使用組件式的封裝
  2. echarts實例不掛載在data上。可以如下設(shè)置
 data() {
    return {};
  },
  created() {
    this.Eechart = null;
  },
  1. 數(shù)據(jù)更新使用
this.Eechart.setOption(fullOption, { replaceMerge: ["series"] });

使用其他方式都會造成內(nèi)存的增長(通過跑f12性能查看),比如以下

1. this.Eechart.setOption(fullOption, true);
2. this.Eechart.setOption(fullOption);
3. this.Eechart.clear();
   this.Eechart.setOption(fullOption, true);
4.this.Eechart.clear(); this.Eechart.dispose();this.Eechart=null 重新init

  1. 卸載掛載,(事實證明還是會增長,后續(xù)有說明)
  if (!this.chart) {
     this.chart = echarts.init(this.$el, { renderer: "svg" });
   }
 this.$once("hook:beforeDestroy", () => {
     // //document.getElementById("mainEChart").removeAttribute('_echarts_instance_');
     this.Eechart.off("click");
     this.Eechart.clear();
     this.Eechart.dispose();

     console.log("是否清理?", this.Eechart.isDisposed);

     this.Eechart = null;
     window.removeEventListener("resize", this.handleWindowResize);
   });
  1. finished 與 click 同時使用,會影響click。有個粗暴方法不建議使用。
    當(dāng)時為了解決100ms-200ms刷新,大量數(shù)據(jù)渲染坐標(biāo)消失問題的解決方法。事實證明沒用,渲染太快了,當(dāng)時很多計算放在前端循環(huán)(數(shù)據(jù)量多的時候有100ms+的計算時長)。只有降低頻率去解決。嘗試過web worker,效果不是很理想,放棄。
      每次更新掛載,下一次更新卸載
       this.chart.on("finished", () => {
       });
      let cache = this.chart._$handlers.finished;
     cache.splice(0, cache.length - 1);
  1. 切換路由時,回到頁面,會有內(nèi)存增長影響
    見6,卸載與掛載。去issue搜了 https://github.com/apache/echarts/issues/4105 沒看到解決方法。如果有,歡迎留言評論。
解決方式就是給路由加上keep-active

最后

經(jīng)過以上,測試跑了性能,時間軸也基本全灰,都能回收。內(nèi)存穩(wěn)定在一個范圍里。

問題

如果有更好的解決方式,歡迎大佬們留言。
因為是三維曲面圖,需要點擊功能,分級顏色。根據(jù)數(shù)據(jù)生成圖形。沒找到echarts外更好選擇。如果有其他的方式或者庫之類,請佬務(wù)必留言!

總結(jié)

以上是生活随笔為你收集整理的关于echarts+vue频繁刷新的造成的内存增长问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。