• 技术文章 >Web开发 >JavaScript

    JavaScript内存泄漏的情况

    小妮浅浅小妮浅浅2021-06-05 11:36:16原创168

    1、意外的全局变量

    function foo(arg) {
        bar = "this is a hidden global variable";
    }

    2、闭包

    function bindEvent(){
      var obj=document.createElement('xxx')
      obj.onclick=function(){
        // Even if it is a empty function
      }
    }

    闭包可以维持函数内局部变量,使其得不到释放。上例定义事件回调时,由于是函数内定义函数,并且内部函数--事件回调引用外部函数,形成了闭包。

    3、没有清理的DOM元素引用

    var elements = {
        button: document.getElementById('button'),
        image: document.getElementById('image'),
        text: document.getElementById('text')
    };
    function doStuff() {
        image.src = 'http://some.url/image';
        button.click();
        console.log(text.innerHTML);
    }
    function removeButton() {
        document.body.removeChild(document.getElementById('button'));
        // 此时,仍旧存在一个全局的 #button 的引用
        // elements 字典。button 元素仍旧在内存中,不能被 GC 回收。
    }

    4、被遗忘的计时器或回调函数

    var someResource = getData();
    setInterval(function() {
        var node = document.getElementById('Node');
        if(node) {
            // 处理 node 和 someResource
            node.innerHTML = JSON.stringify(someResource));
        }
    }, 1000);

    以上就是JavaScript引发内存泄漏的情况,希望对大家有所帮助。更多Javascript学习指路:Javascript

    专题推荐:javascript内存泄漏
    上一篇:JavaScript垃圾回收机制的分析 下一篇:JavaScript内存泄漏的识别及避免

    相关文章推荐

    • javascript:void怎么解决• javascript内存泄漏的识别方法• javascript中web worker是什么• javascript web worker的应用场景• javascript如何声明函数• javascript回调函数的异步探究• javascript怎样避免回调地狱• javascript算法的复杂度介绍• javascript递归函数如何使用• javascript如何反转字符串• javascript反转数组的方法• javascript回文是什么• javascript首字母大写转换的方法• javascript搜索算法有哪些
    品易云

    全部评论我要评论

  • 取消发布评论发送
  • 

    Python学习网