關於echarts+vue頻繁重新整理的造成的記憶體增長問題
前言
關於解決echarts+ws多次資料重新整理渲染,記憶體增長溢位的嘗試。
記錄一下,便於下次使用有參考
方法
- 關閉echarts動畫
- tooltip的動畫設定為false。(echarts動畫會快取,透過快照可以看出)
tooltip: { axisPointer: { animation: false, //很重要! }, },
- 單獨設定頻繁重新整理的echarts dom,不使用元件式的封裝
- echarts例項不掛載在data上。可以如下設定
data() { return {}; }, created() { this.Eechart = null; },
- 資料更新使用
this.Eechart.setOption(fullOption, { replaceMerge: ["series"] });
使用其他方式都會造成記憶體的增長(透過跑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
- 解除安裝掛載,(事實證明還是會增長,後續有說明)
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); });
- finished 與 click 同時使用,會影響click。有個粗暴方法不建議使用。
當時為了解決100ms-200ms重新整理,大量資料渲染座標消失問題的解決方法。事實證明沒用,渲染太快了,當時很多計算放在前端迴圈(資料量多的時候有100ms+的計算時長)。只有降低頻率去解決。嘗試過web worker,效果不是很理想,放棄。
每次更新掛載,下一次更新解除安裝 this.chart.on("finished", () => { }); let cache = this.chart._$handlers.finished; cache.splice(0, cache.length - 1);
- 切換路由時,回到頁面,會有記憶體增長影響
見6,解除安裝與掛載。去issue搜了 沒看到解決方法。如果有,歡迎留言評論。
解決方式就是給路由加上keep-active
最後
經過以上,測試跑了效能,時間軸也基本全灰,都能回收。記憶體穩定在一個範圍裡。
問題
如果有更好的解決方式,歡迎大佬們留言。
因為是三維曲面圖,需要點選功能,分級顏色。根據資料生成圖形。沒找到echarts外更好選擇。
來自 “ ITPUB部落格 ” ,連結:https://blog.itpub.net/70036594/viewspace-3004131/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Kafka 如何最佳化記憶體緩衝機制造成的頻繁 GC 問題?Kafka記憶體GC
- 關於JVM 記憶體的 N 個高頻面試問題!JVM記憶體面試
- 關於PHP記憶體洩漏的問題PHP記憶體
- 告別記憶體OOM,解決MySQL記憶體增長問題記憶體OOMMySql
- [React]setState呼叫過於頻繁的問題React
- Android-Fragment 切換造成記憶體溢位,導致記憶體增長AndroidFragment記憶體溢位
- [效能]【JVM】關於JVM記憶體的N個問題JVM記憶體
- 關於dataWithContentsOfFile 讀取大檔案的記憶體問題記憶體
- [20191220]關於共享記憶體段相關問題.txt記憶體
- IE下記憶體增漲明顯的問題記憶體
- [20190320]關於使用smem檢視記憶體使用的問題.txt記憶體
- 關於java記憶體訪問重排序的思考Java記憶體排序
- project中的堆疊記憶體,記憶體地址引用,gc相關問題Project記憶體GC
- [20191223]關於共享記憶體段相關問題3.txt記憶體
- 排查Java的記憶體問題Java記憶體
- 記錄一次現網MySQL記憶體增長超限問題定位過程MySql記憶體
- 關於JavaScript的記憶體機制JavaScript記憶體
- 造成記憶體洩漏的操作有哪些?記憶體
- JavaScript變數,資料和記憶體的相關問題JavaScript變數記憶體
- 對於記憶體洩漏問題的簡單認知記憶體
- 線上排查:記憶體異常使用導致full gc頻繁記憶體GC
- DDR4記憶體頻率2400和3000的區別 高頻記憶體與低頻記憶體效能效能對比記憶體
- 開發小程式被問到最頻繁的問題(上)
- 關於redis記憶體分析,記憶體優化Redis記憶體優化
- 關於 PHP 記憶體溢位的思考PHP記憶體溢位
- 造成記憶體洩漏的異常處理記憶體
- 關於記一次 Go 服務記憶體洩漏問題調查Go記憶體
- 線上問題排查例項分析|關於Redis記憶體洩漏Redis記憶體
- 線上問題排查例項分析|關於 Redis 記憶體洩漏Redis記憶體
- 關於開發Cesium造成的電腦風扇狂飆的問題
- WPF頻繁更新UI卡頓問題UI
- 解決golang 的記憶體碎片問題Golang記憶體
- 【問題排查系列】JDK1.8 下記憶體不斷增長排查及解決JDK記憶體
- 記一次生產頻繁發生FullGC問題GC
- 關於autoreleasepool記憶體管理記憶體
- 史丹佛大學:研究發現頻繁的媒體多工操作影響記憶力
- 關於虛擬機器記憶體和JVM記憶體設定的思考虛擬機記憶體JVM
- 從容應對問題再發:關於JVM記憶體,你想知道的都在這裡JVM記憶體