Skip to content

前端内存泄露浅析 #158

Open
Open
@FrankKai

Description

@FrankKai

手上负责的vue项目最近出现一个这样的问题,用户用着用着就出现:”喔唷,崩溃啦!“的提示。

做了以下性能优化尝试:

  • 主动销毁对象及其子对象
  • 主动取消监听listener
  • 本地搜索减少组件DOM渲染

主动销毁对象及其子对象

vue-cropper.js,组件实例不会主动销毁,需要主动调用destroy方法销毁。
createjs/easeljs,组件实例需要手动销毁canvas画布,maker.stage.canvas = null;maker.stage.removeAllChildren();

主动取消监听listener

createjs/easeljs,maker.stage._eventListeners = null;maker.stage.removeAllEventListeners();

本地搜索减少组件DOM渲染

iview的select组件,当数据量过大时,DOM渲染会占用很大的内存,非常吃性能。因此为其增加了渲染指定个数的功能,例如首次渲染只渲染20个,之后的搜索从已经加载好的数据中搜索并渲染。

有一定的收效,但是在仍然存在性能问题,切换菜单的过程中,Memory中的Javascript VM instance以100MB/次的速度增加,而且还是在没有数据的情况下。

因此,迫切的需要一次深度的性能优化,以解决当前项目遇到的问题。

解决完这个问题我将增强技能:

  • Chrome DevTools的Memory,Performance工具的应用
  • vue相关,javascript相关,DOM相关的未知内存泄漏知识点

我将记录以下深度分析内存泄露的相关内容:

  • 内存泄露分析Snapshot相关知识点
  • 内存泄露分析Snapshot的疑惑和实践
  • Chrome DevTools Elements的Event Listeners分析内存泄露

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions