我知道,内存泄露定义是指一块被分配的内存既不能使用,又不能回收,直到浏览器进程结束。fucntion f1(){
   a=new Object()
}
f1()还知道有个引用计数法,函数f1调用时,是不是a的引用计数器变为1,造成无法回收,所以说是内存泄露了?

解决方案 »

  1.   

    这样应该不会泄露的,函数中的a是全局变量,第二次调用开始,每次调用f1函数就会创建一个新的空对象实例再赋值给a变量,这时候就没有任何变量引用原来的对象实例了,浏览器就将其自动销毁了。
    while(true) f1(); //Chrome下运行了1分钟,内存没有增长
      

  2.   

    你的对象只在while循环体里有效,就像楼上说的是局部变量,一次循环结束后就会等待GC自动收集,然后释放内存!
      

  3.   

    啊? 不会吧? 那这个呢 function countMethod(){
      var object1 = new Object();
      var object2 = new Object();
      object1.method1 = object2;  
      object2.method2 = object1; 
    }
      

  4.   

    function countMethod(){
          var object1 = new Object();
          var object2 = new Object();
          object1.method1 = object2;  
          object2.method2 = object1; 
    }
    countMethod();
    console.log(object1.method1); //Uncaught ReferenceError: object1 is not defined
      

  5.   

    谁说局部变量不会引起内存泄漏?只要循环引用绝对内存泄漏,特别是引用了dom。
    可以参阅xxx,这个帖子就是循环引用的例子。