今天看到这样一个说法:内存泄漏,释放数组的所有元素,不是a = [] , 而是 a.length = 0。我之前释放数组的时候都是用的第一种方法。不知道上述描述是否正确?另外,JS中数组到底是如何释放所有元素的?还请各位指点~谢谢~

解决方案 »

  1.   


    不太明白楼主具体想要获得什么知识点?
    1. 内存泄露和释放数组 不知道有什么直接联系? 只要变量脱离作用域, 那么当JS一定时间进行内存扫描后就会自动回收.2. 所谓数组(引用类型)那么引用类型就是保存着一个指向堆值的一个指针. 所以你可以将指针更改到一个新的空数组即a = []; 也可以直接操作内置属性a.length = 0; 都是将数组的元素清空.
      

  2.   


    1.内存垃圾回收的关注点在于引用.只要切断引用垃圾回收机制就会扫描到. 如果是考虑内存的话,我认为
    a = null就可以了.2.如果从内存分配考虑 a = [];这样的话 是将a的指针地址修改指向了空数组.而原来分配在堆里面的值在下一次内存回收的时候由于没有地址引用就会自动回收了.应该就不占有资源了.
      

  3.   

    我是这样实现的:a是数组
     
     var obj;
     for(var i=a.length-1;i>=0;i--){
      obj = a.pop();   
      obj.free();  
      obj = null;
     }
    不会产生内存释漏