Open
Description
手上负责的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分析内存泄露