简介
1 .主要是在单页应用中,用户不会刷新浏览器,所以js应用需要自己清理组件来确保垃圾回收以预期的方式生效
2 . 使用其他第三方可能会创建DOM的插件的时候,在清除DOM的时候一定要保证完全清除dom片段,不要造成残留。
3 .频繁调用创建的代码,但是一直没有清除的话就会造成内存飙升,而且一直不会释放.一定要destory掉,比如echarts那个插件,切换到其他界面,不需要改组件的时候一定要destory掉
4 .尤其是手机或者其他性能不是特别好的设备尤为重要,或者应用内有很多应用内的导航么?这都需要良好的内存管理
5 .
v-if指令产生的内存泄露
1 .v-if绑定到false的值,但是实际上dom元素在隐藏的时候没有被真实的释放掉
Vue router
1 .当用户在你的应用中导航的时候,vue router从虚拟dom中移除了元素,并替换为了新的元素,Vue的beforeDestory()钩子函数就是一个解决清理工作的好地方,我们可以将清理dom的操作都放到这个里面
2 .
替代方法
1 .在移除元素的时候的内存管理如上
2 .如果有需要在内存中保留状态和元素的时候,使用内建的keep-alive组件
1 .keep-alive包裹的组件,状态会被保留在内存里面
2 .可以用来提升用户体验,当一个用户在文本框中输入了文本,再一次导航回来,文本还在,岂不美滋滋
3 .这个时候移除的时候就要选取 deactivated钩子来移除元素了
3 .Vue中的内存泄露往往会发生在Vue之外其他DOM操作的第三方库,一定要确保测试应用的内存泄露问题并在适当的时候做组件清理
4 .