關於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記憶體面試
- 關於java吃記憶體的問題Java記憶體
- 告別記憶體OOM,解決MySQL記憶體增長問題記憶體OOMMySql
- 關於PHP記憶體洩漏的問題PHP記憶體
- 關於SQL Server的記憶體佔用問題SQLServer記憶體
- Android-Fragment 切換造成記憶體溢位,導致記憶體增長AndroidFragment記憶體溢位
- [效能]【JVM】關於JVM記憶體的N個問題JVM記憶體
- QQ群裡關於動態記憶體的問題記憶體
- 關於記憶體快取的可伸縮性問題記憶體快取
- 求助:關於linux下共享記憶體的問題(轉)Linux記憶體
- 關於MSSQL佔用過多記憶體的問題 (轉)SQL記憶體
- IE下記憶體增漲明顯的問題記憶體
- 關於dataWithContentsOfFile 讀取大檔案的記憶體問題記憶體
- 關於JProfiler監測記憶體佔用問題!!記憶體
- vector 避免記憶體頻繁分配釋放與手動釋放vector記憶體記憶體
- 關於appium在安卓上頻繁安裝unlock、setting.apk的問題查詢記錄APP安卓APK
- 關於java記憶體訪問重排序的思考Java記憶體排序
- project中的堆疊記憶體,記憶體地址引用,gc相關問題Project記憶體GC
- 記錄一次現網MySQL記憶體增長超限問題定位過程MySql記憶體
- 有關記憶體的思考題記憶體
- 關於程式的實體記憶體RSS記憶體
- 排查Java的記憶體問題Java記憶體
- 記憶體溢位的問題記憶體溢位
- WPF頻繁更新UI卡頓問題UI
- 關於JavaScript的記憶體機制JavaScript記憶體
- crontab導致的頻繁傳送郵件的問題
- 線上排查:記憶體異常使用導致full gc頻繁記憶體GC
- 線上問題排查例項分析|關於 Redis 記憶體洩漏Redis記憶體
- 線上問題排查例項分析|關於Redis記憶體洩漏Redis記憶體
- 開發小程式被問到最頻繁的問題(上)
- 記憶體洩露引起的問題記憶體洩露
- AFN的記憶體洩漏問題記憶體
- ThreaLocal記憶體洩露的問題記憶體洩露
- 史丹佛大學:研究發現頻繁的媒體多工操作影響記憶力
- 關於redis記憶體分析,記憶體優化Redis記憶體優化
- JavaScript變數,資料和記憶體的相關問題JavaScript變數記憶體