[已解决问题] 关于js中的资源释放
提问时间: 2007-12-25 15:58
悬赏分:5 浏览:620 次

   var arr=[];

   //创建8000个div,并把它添加到document.body中

for(var i=0; i<8000; i++){
    var div = document.createElement("div");
    div.innerHTML = i;
    arr[arr.length] = div;
    document.body.appendChild(div);
   }  

  //从document.body中移除这些对象 

//现在问题是运行如下代码能够释放一定的内存,但似乎总有一些内存不是释放不掉,比如在创建8000个div之前,IE占的内存为21M,创建完成之后IE占25M,然后运行如下代码IE占用的内存会多于21M,似乎总有0.5至1M的内存释放不掉,

   for(var i = 0; i < arr.length; i++){
        var div = arr[i];
        div.parentNode.removeChild(div);
        delete arr[i];
    }
    arr = [];

不知是怎么回事

 

提问者:t-mac.NET - 菜鸟二级

问题补充:在firefox中几乎没释放。。。

最佳答案
可能是GC的没有及时回收
2007/12/26 8:41:43 回答者:阿不
其它回答(2)
其实他已经是释放占用的内存的,哪个内存使用只是一个假像... 你最小化一下IE再最大化,然后再看看占用内存大小...
8个月前   回答者:没剑 - 菜鸟二级
CollectGarbage()函数 调用这个函数可以主动回收,另外你把IE浏览器最小化一下,会看到明显的效果,因为在最小化的时候IE会调用这个函数
8个月前   回答者:Wilensky - 小虾三级
评论
8个月前   t-mac.NET :
我也查了一下,有些资料说不提倡手动CollectGarbage(),,,再说这个只是IE特有的吧
8个月前   阿不 :
这不是IE特有的,而是javascript的设计。
所谓GC,就是自动垃圾回收器,最好不要手工去调用,这样会影响到性能。
.NET也是一样的。
   您需要登录以后才能回答!
 

我要提问

我的问题


快到期问题

> 问题排行榜

相关链接