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让代码有层次,有风格。让我们看的兄弟们也好受些。代码太乱了,没有人会细看的。
|