极致探索:这些JS操作竟会导致内存泄露?

内存溢出是指应用系统中存在无法回收的内存或使用的内存过多,最终使得程序运行要用到的内存大于虚拟机能提供的最大内存。

js哪些操作会造成内存泄露?

闭包

意外的全局变量引起的内存泄露

被遗忘的定时器或者回调:没有使用clearInterval()、clearTimeout()清理

事件

引用

回调函数

脱离 DOM 的引用

vue内存泄漏
    vue是单页应用 (SPA),页面路由切换后,内存未释放。vue-router跳转到别的组件导致的内容泄漏
    keep-alive将组件保存到了内存中,不会释放
    通过原型连,将插件绑定在vue实例上,通过this全局引用
    在钩子函数(如:mounted/created)中,绑定了DOM/BOM 对象中的事件、变量的初始化,内存不会释放。需要在beforeDestroy 中做对应销毁处理
    如果在mounted/created 钩子中使用了$on,需要在beforeDestroy 中做对应解绑($off)处理

    通过插件新建的对象,使用完之后一定要删除,释放内存
        使用第三方库、插件引起的
        使用其他的框架(如:jquery)创建元素、绑定事件,v-if的值变成false时,无法删除这些元素、事件
        使用其他的框架(如:jquery)创建元素、绑定事件,v-if的值变成false时,无法删除这些元素、事件
            1、v-if绑定到false的值,但是实际上dom元素在隐藏的时候没有被真实的释放掉
            2、就是非常常见的比如我们通过v-if删除了父级元素,但是并没有移除父级元素里的dom片段。

版权声明:他人将便捷数据网提供的内容与服务用于商业、盈利、广告性目的时,需得注明出处,转载时请附上原文出处链接及本声明。

原文链接:https://www.bian-jie.cn/search/promotion_article/1/19386671.html

点击加入QQ交流群:{{qqQNum}}