浏览 4786 次
锁定老帖子 主题:js内存释放问题
精华帖 (0) :: 良好帖 (0) :: 新手帖 (9) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-02-20
{ 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下,这个函数参数的内存占用都无法释放,为什么? 请高手帮我解释下 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-02-20
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=[]; } |
|
返回顶楼 | |
发表时间:2008-02-20
应该是IE 垃圾回收机制问题吧
以前在MSDN看见过垃圾回收的问题` |
|
返回顶楼 | |
发表时间:2008-02-20
yfgcq 写道 在IE7和firfox下,这个函数参数的内存占用都无法释放,为什么?
请高手帮我解释下 基本常识:垃圾回收不是时刻进行的。引擎只在需要的时候才进行回收。 JScript中可以调用CollectGarbage()强制执行。Rhino中可以调用gc()强制执行。 |
|
返回顶楼 | |