• 技术文章 >Web开发 >JavaScript

    JavaScript内存泄漏的情况

    小妮浅浅小妮浅浅2021-08-24 10:09:21原创1761

    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

    推荐操作环境:windows7系统、jquery3.2.1版本,DELL G3电脑。

    专题推荐:javascript内存泄漏
    品易云
    上一篇:JavaScript垃圾回收机制的分析 下一篇:JavaScript垃圾回收的优化方法

    相关文章推荐

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

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网