zoukankan      html  css  js  c++  java
  • JavaScript之内存泄漏和内存溢出

    内存溢出:是一种程序运行时出现的错误;当程序运行时需要的内存超过了剩余的内存时,就会抛出内存溢出的错误。

    var obj = {}
    for(let i = 0;i < 1000000;i++){
        obj[i] = new Array(1000000)
    }
    

    个人理解:内存溢出是最终结果,即使没有编写内存泄露的代码也有可能造成内存溢出

    内存泄漏:占用的内存没有及时释放,内存泄漏积累多了就容易导致内存溢出。

    常见的内存泄漏

    • 意外的全局变量
    function fn(){
        a = 10
        console.log(a)    
    }
    fn()
    
    for(let i = 0;i < 10;i++){
      window[i] = i
    }
    • 没有及时清理的定时器
    var timer = setInterval(() => {
      console.log('----')
    }, 1000)
    
    //及时清理定时器
    clearInterval(timer)
    • 闭包
    function fn1() {
      var arr = new Array[100000];
      function fn2() {
        console.log(arr.length)
      }
      return fn2;
    }
    var f = fn1();
    f();
    
    f = null // 让内部函数成为垃圾对象,释放闭包
    • 事件绑定
    function fn() {
        var zjy = document.getElementById('zjy'); 
        zjy.onclick = function () {
            alert(zjy.innerHTML);
        };
    
        zjy = null;       //解除引用,等待垃圾回收
        alert(zjy);       //null,说明已经不存在了
    }
    fn();  
    
    • 事件监听
    function fn(){
        console.log('zjy')
    }
    let zjy = document.getElementById('zjy'); 
    zjy.addEventListener('click',fn)
    zjy.removeEventListener(fn)
    

      

  • 相关阅读:
    k-means聚类JAVA实例
    钓鱼站点以世界杯足球赛为饵,收集个人资料
    南桥--特殊回文数
    Oracle 数据文件管理
    hihoCoder #1142 : 三分求极值
    时间复杂度和空间复杂度[数据结构]
    poj 3635 Full Tank? ( 图上dp )
    FastQC结果详解
    毕业设计常见问题
    centos 查看USB接口的版本
  • 原文地址:https://www.cnblogs.com/zhenjianyu/p/13257420.html
Copyright © 2011-2022 走看看