内存泄漏就是内存中的变量没有回收,一直存在与内存中,造成内存的浪费的行为。常见的内存泄漏有以下5种

1. 意外的全局变量

2. 计时器和回调函数timers

3. DOM泄漏

4. js闭包

5. console

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta http-equiv="X-UA-Compatible" content="IE=edge" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>Document</title></head><body><p id="p1">p1</p><!-- 内存泄漏:内存中的变量没有回收,一直存在与内存中,造成内存的浪费 --><script>// 1. 意外的全局变量 这里的a就是全局变量 它是foo()内部作用域变量的引用function foo() {// 一个未声明变量的使用,会在全局对象中创建一个新的变量a = "test";console.log(a);}// 上面的写法等价于// function foo() {//     window.a = "test";// }foo();// 1.解决方法;清空这个变量 不过有缓存问题a = null;console.log(a);</script><script>// 2.解决方法:在js文件开头添加 ‘use strict',开启严格模式 不存在意外的全局变量'use strict'function foo() {// 必须定义let a = "test";console.log(a);}foo()// 这里的a变为局部变量// console.log(a);// 3.定时器setInterval或者setTimeout使用没有及时清理// 定义一个叫timer的定时器const timer=setInterval(()=>{console.log(1);},200)// 清除叫timer的定时器clearInterval(timer)// 3. DOM泄漏// 1)给DOM对象添加的属性是一个对象的引用const obj={a:1}// 给p1添加一个c属性 浅拷贝了对象obj给c obj变了c也跟着变化document.getElementById('p1').c=objobj.d=5console.log(document.getElementById('p1').c);// 解决方法:在window.onload时间中加上 document.getElementById('id').c = null;window.onload=()=>{document.getElementById('p1').c = null; console.log(document.getElementById('p1').c);}// 2)元素引用没有清理 直接删除元素// 3)事件的绑定没有移除const fn=()=>{console.log(1);}document.getElementById('p1').addEventListener('click',fn)removeEventListener('click',fn)// 控制台打印的没有清除// js闭包// 闭包函数里面的局部变量没有销毁</script></body>
</html>

内存泄漏的原因及解决方法相关推荐

  1. ORA-04030: 在尝试分配...字节(...)时进程内存不足的原因分析解决方法

    ORA-04030: 在尝试分配...字节(...)时进程内存不足的原因分析解决方法 参考文章: (1)ORA-04030: 在尝试分配...字节(...)时进程内存不足的原因分析解决方法 (2)ht ...

  2. malloc函数分配内存失败的原因及解决方法

    原文链接:http://blog.csdn.net/lighthear/article/details/70146602 malloc函数分配内存失败的原因及解决方法 先说结论 malloc()函数分 ...

  3. win7系统提示计算机内存不足,Win7系统下提示内存不足的原因及解决方法

    很多时候,我们在使用电脑的过程中遇到难题或是故障在所难免的.最近就有很多win7系统的用户表示,电脑系统老是提示"计算机内存不足,如要还原足够的内存以使程序正确工作,请保存文件,然后关闭或重 ...

  4. java内存溢出原因及解决_java内存溢出的原因和解决方法

    java内存溢出的原因和解决方法 发布时间:2020-06-15 17:57:39 来源:亿速云 阅读:85 作者:元一 内存溢出含义: 内存溢出(out of memory)通俗理解就是内存不够,通 ...

  5. 清华山维eps提示计算机内存不足,系统提示“内存不足”的原因及解决方法

    电脑内存为电脑运行提供空间,不过有用户反映,他的电脑经常会提示系统内存不足,这是什么情况?其实引起电脑内存不足的原因有很多,可能是打开的程序或者文件太多导致系统不足,也可能是剪切板占用太多内存,这都有 ...

  6. 内存泄漏的原因及解决办法_探索内存碎片化 - 第288篇

    相关历史文章(阅读本文之前,您可能需要先看下之前的系列 ) 色谈Java序列化:女孩子慎入 - 第280篇 烦不烦,别再问我时间复杂度了:这次不色,女孩子进来吧 - 第281篇 双向链表,比西天还远? ...

  7. 内存泄漏的原因及解决办法_浅谈 JS 内存泄漏问题

    什么是内存泄漏? 程序的运行需要内存.只要程序提出要求,操作系统或者运行时(runtime)就必须供给内存. 对于持续运行的服务进程(daemon),必须及时释放不再用到的内存.否则,内存占用越来越高 ...

  8. 什么是内存泄漏,常见引起引起内存泄漏的原因,及解决办法

    一:什么是内存泄露 内存泄露是指:内存泄漏也称作"存储渗漏",用动态存储分配函数动态开辟的空间,在使用完毕后未释放,结果导致一直占据该内存单元.直到程序结束.(其实说白了就是该内存 ...

  9. 内存泄漏的原因及解决办法_编程基础 | C++片段 指针、多态和内存分配

    本片段将介绍运行期而不是编译期的内存分配 1.变量的内存分配和方法的前期绑定 函数中声明的局部变量与其参数以及簿记数据一起被放置在一个活动记录中.活动记录存储在名为运行期栈(run-time stac ...

最新文章

  1. python大家都会吗_一篇告诉你为什么人人都应该学点Python?
  2. python练习集100题_8道关于python的练习题
  3. 关于敏捷规划的微信对话
  4. SQL SERVER中一些常见性能问题的总结
  5. 部署OCS后修改web farm地址
  6. 数据结构栈的知识_数据知识栈
  7. Maven,Eclipse和Java 9
  8. Bailian2752 字符串数组排序问题【排序】
  9. C3模块-空洞可分离卷积存在的问题及轻量化语义分割模型架构技巧
  10. c语言代码行数统计标准,Shell脚本实现C语言代码行数统计
  11. Java修改文件MD5值-yellowcong
  12. OS/操作系统_清华大学(陈渝)笔记目录
  13. 系统完全优化 全面剖析XP
  14. IMEI、IMEISV
  15. 卸载软件-Uninstall Tool(无残留)
  16. L1正则化、L2正则化的多角度分析和概率角度的解释
  17. 2,JESD204为什么值得关注?
  18. kindle pw3 Paperwhite3强制降级过程思路
  19. 用友T3总账工具账套间复制凭证
  20. 搭建基于github的个人网站

热门文章

  1. 【运营宝典】华为分析服务如何助力广告投放策略优化?
  2. 通过天眼查查询相关企业信息
  3. Linux 下man 命令的使用
  4. WAITED TOO LONG FOR A ROW CACHE ENQUEUE LOCK!
  5. 【强化学习】什么是强化学习算法?
  6. CentOS 8: No URLs in mirrorlist error
  7. html网页配色,#0000ff表示什么颜色,设计师谈网页配色:按颜色分类(黄色)
  8. 入职百度第二周,我知道了这些
  9. Java-c3p0原生写法
  10. kvm切换器linux换屏方法,kvm切换器连接图及安装方法