首页 > 系统相关 >记一次Echart 内存泄露问题排查

记一次Echart 内存泄露问题排查

时间:2024-07-24 15:08:59浏览次数:12  
标签:发现 Echart 问题 排查 内存 echarts

最近发现一个web项目总是莫名其妙的内存增长,然后进行定位后来发现问题大概率出在Eharts上。

于是乎就开始搜索关于echarts内存增长的一些例子,但是都没有结果。

其中翻博客时发现甚至有人换成一维数组就问题就解决了,当然这个试过之后对我来说解决不了问题。

image

(这样能解决掉也真是离了个大谱啊,可有时候问题就是那么的不一样。。)

然后只能去看看issues了,这一看发现早在7年之前就有人提过这类问题,每隔一段时间都有人再单独提问,甚至在上周还有人提问,但是所有相关的issues看样子都不了了之了。

image

这之后这些帖子下甚至每年都还有人吐槽
image
image

各种吐槽 然后我看到了这个帖子
image

就去检查了下官方的例子,确实也有内存增长,然后就单独开了issue反映,想着终于能解决了,然后是等待回复进行沟通。

在沟通时发现问题也不是很简单,因为这个增长的数据在多浏览器下表现不一样,甚至还一直怀疑是vue的问题,同时还发现虽然官方例子也有增长,但是现象不同。

于是就一点点的试和排查,最后定位到了问题。

symbol开启会导致 在setoption内存释放不掉

就是点绘制的问题,而关键就是默认点绘制是开启的。

最终该问题的echarts的开发者修复也已经提上来了,应该会在下个版本(5.5.2)解决。

image

希望同样被这个问题折磨的朋友们也能解脱下。

解决方案:
1、等待最新版本更新,直接升级echarts
2、或者设置symbol为none将不开启点的绘制,或者是将showSymbol设置为false,这将只在touch的时候显示点。

最后附上issue
[Bug] Echart setoption内存会随时间增长且无法回收(必现) · Issue #20151 · apache/echarts (github.com)

标签:发现,Echart,问题,排查,内存,echarts
From: https://www.cnblogs.com/idealy/p/18320938

相关文章

  • 内存管理-22-KASLR
    基于msm-5.4一、简介1.什么是KASLRKASLR是kerneladdressspacelayoutrandomization的缩写,直译过来就是内核地址空间布局随机化。KASLR技术允许将kernelimage映射到vmalloc区域的任何位置(待确认哦)。2.引入KASLR的原因没有KASLR的时候,kernelimage都会映射到一个固......
  • Druid出现DruidDataSource - recyle error - recyle error java.lang.InterruptedExce
    原文链接: https://www.cnblogs.com/zhoading/p/14040939.htmlhttps://www.cnblogs.com/lingyejun/p/9064114.html 一、问题回顾线上的代码之前运行的都很平稳,突然就出现了一个很奇怪的问题,看错误信息是第三方框架Druid报出来了,连接池回收连接时出现的问题。1234......
  • Echarts框架
    Echarts官方中文版一、创建HTML骨架,导入echarts.js文件二、准备盒子 三、基于准备好的DOM,在内链式script中初始化echarts实例四、配置数据,下图为例子,可根据需要进行更改五、最后显示数据 更多其他样式模板,可进行按需选择 ......
  • 什么是闭包,闭包的使用场景、闭包的优缺点,以及解决内存泄露的方法
    1、定义:闭包是指有权访问另一个函数作用域中变量的函数。有局部变量才会有闭包。简单理解:如果一个函数内部访问了外部的变量,那么就是闭包2、举个闭包的例子:displayName() 没有自己的局部变量。然而,由于闭包的特性,它可以访问到外部函数的变量3、使用场景一、创建私有变量......
  • 既然内存不值钱,为什么java还要搞一个压缩指针?
    尽管当前内存的价格可能相对较为亲民,但Java引入压缩指针技术的原因并不单纯基于内存成本,而是出于优化内存使用、提升程序性能以及适应不同应用场景的综合考虑。在64位Java虚拟机(JVM)中,传统的指针占用8个字节(64位)。然而,对于大多数Java应用程序来说,实际上并不需要如此大的内存地......
  • 深入理解Java虚拟机:JVM高级特性与最佳实践-第三章-垃圾收集器与内存分配策略
    在java内存运行时区域中的各个部分中,程序计数器、虚拟机栈、本地方法栈3个区域随线程而生,随线程而灭,因此这几个区域的内存分配和回收都具备确定性,在这几个区域内就不需要过多考虑如何回收的问题,当方法结束或者线程结束时,内存自然就跟随着回收了。但是Java堆和方法区这两个区域具有......
  • 前端之ECharts快速搭建图表教学
    一.非工程化开发下1.通过jsdelivr引入ECharts的js文件<scriptsrc="https://cdn.jsdelivr.net/npm/[email protected]/dist/echarts.min.js"></script>2.从官网找到中意的图表样式(这里以饼状图为例) 官网直达  ECharts官网<!DOCTYPEhtml><html><head><metacha......
  • 深入理解Java内存模型及其在多线程编程中的应用
    深入理解Java内存模型及其在多线程编程中的应用大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!今天我们来深入探讨Java内存模型(JavaMemoryModel,JMM)及其在多线程编程中的应用。一、Java内存模型概述Java内存模型(JMM)是Java虚拟机规范的一部分,定义了变......
  • 内存取证-手册
    取证工具:VolatilityV3:https://github.com/volatilityfoundation/volatility3V2:https://github.com/volatilityfoundation/volatilityVolatility2.6.pdfVolatility基本使用命令./vol.py‐f[image]­‐profile=[profile][plugin]-f后面需要跟绝对路......
  • 内存取证(电子取证)
    内存取证,也被称为RAM取证或易失性内存取证,是指在计算机系统运行时,对物理内存(RAM)进行分析的过程。与硬盘上的数据不同,内存中的数据是易失性的,意味着一旦电源中断,这些数据就会丢失。因此,内存取证需要在系统仍然运行时迅速而准确地进行。内存取证的重要性:内存取证之所以重要,是因......