js内存释放问题

yfgcq 2008-02-18
     function aa()
{ var obj={};
//obj=document.getElementById("DivElement");
   // document.getElementById("DivElement").expandoProperty=obj;
obj.bigString=new Array(300).join(new Array(2000).join("XXXXX"));
obj=null;alaMemGarbage();
//js好像是引用计数系统,每个所引用的对象都会保留一个计数,以获悉有多少对象正在引用它。如果计数为零,该对象就会被销毁,其占用的内存也会返回给堆
//obj已经清空了,但这里为什么没有内存回收???
       }
在IE7和firfox下,这个函数参数的内存占用都无法释放,为什么?
请高手帮我解释下
yfgcq 2008-02-19
var obj=[];
for(var i=0;i<1000;i++)
{
    //第一种结构
    obj[i+",0"]=[{"ID":3475,"Name":"测试","Telephone":"22222222"},{"ID":3476,"Name":"测试","Telephone":"22222222"}];
    //第二种结构
   //var obj1[i+",0"]='3475,"测试",22222222|3476,"测试",22222222'

}
好像第二种结构内存占用要少得多

for(var i=0;i<1000;i++)
{
    obj[i+",0"]=null;
}
obj=[];
//都清理空了,内存好像没能够释放?
//刷新一次页面,内存也变化一次

//下面这样处理,感觉内存释放了,
//但这样好像逻辑上有问题哟
for(var i=0;i<1000;i++)
{
    obj[i+",0"]=null;
    obj=[];
}
jonson 2008-03-05
CollectGarbage();
网上看了下,这个函数有垃圾回收功能。
我不知道你的那个 alaMemGarbage(),应该不是js内置的函数吧。
yfgcq 2008-03-05
alaMemGarbage里面是放的CollectGarbage这个函数哟,
只不过这个函数只是针对IE的,所以在里面if了下。
好像内存回收不是即时的哟。NULL、去掉相关的引用过后,不一定马上就释放该对象
xombat 2008-03-05
CollectGarbage();
alaMemGarbage();
这两个函数你们都试过了吗?
我刚才试了试,firebug说这两个函数都is not defined
xombat 2008-03-05
我感觉js的内存释放没有那么简单
不是一旦某块内存的引用是0的时候,他就会进行垃圾回收
因为垃圾回收是有开销的,所以他会自己选择时机进行回收
dd-up 2008-04-30
自己千万不要插手javascript内存回收机制。一切交给javascript去做吧。该怎么写你的函数就怎么写。
dd-up 2008-04-30
另外,大家发贴的时候,我们最好注意一下代码的格式。如果不能用代码标签的,尽量用tab让代码有层次,有风格。让我们看的兄弟们也好受些。代码太乱了,没有人会细看的。
Global site tag (gtag.js) - Google Analytics