记一次内存泄漏排查

本文讲述了作者在处理大屏建模过程中遇到的内存泄漏问题,通过Chrome内存面板定位到Echarts和Konva库的引用,发现是由于实例未正确销毁。作者还介绍了其他页面的内存泄漏排查方法,列举了常见的内存泄漏情况,如闭包、定时器、事件监听等。
摘要由CSDN通过智能技术生成

记一次内存泄漏排查

起因:大屏反复建模在低内存电脑出现卡死

任务管理器,反复进入建模页退出,发现内存未释放,可能存在内存泄漏。
在这里插入图片描述

1、chrome-F12-内存(memory)面板,选择对快照,初始拍摄快照(也就是记录这一刻的内存使用情况)

在这里插入图片描述

在这里插入图片描述

2、进入大屏面板建模页,(该建模包含6个echarts图表)然后退出再进入若干次(这里进入退出10次)后,再次拍摄快照:

在这里插入图片描述

离开页面后,echarts应该被销毁,则正常情况下快照不应存在echarts。如图存在6*10个echarts对象,存在内存泄漏。

点击任意对象,查看引用情况:
在这里插入图片描述

寻找可疑引用,该引用与konva库有关,则查看代码,推测与konva实例未销毁有关。新增代码如下:
在这里插入图片描述

再次运行数次拍摄快照,发现echarts对象不再出现,则关于echarts的内存泄漏解决。

3、其他页面内存泄漏排查

在该页面(组件)自定义类,在创建时new该类实例

<script>
class TestOutMemoryAAA {}
export default {
  data() {

    return {
      test: null
    }
  },
  created() {
    this.test = new TestOutMemoryAAA()
  }
}

访问该页面(组件)后离开,拍摄快照,检索,若存在该类则说明该组件可能存在内存泄漏。

在这里插入图片描述

内存泄漏常见情况:1、闭包、定时器未销毁(置null);2、addEventListener未对应使用removeEventListener;3、vue bus使用 o n 未对应使用 on未对应使用 on未对应使用off。4、第三方插件生成实例可能需手动销毁而未销毁。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值