A JavaScript Fancier

伟大的javascript技术研究中...

  IT博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  304 随笔 :: 0 文章 :: 479 评论 :: 0 Trackbacks
JavaScript之内存释放(推荐)
2006年11月17日 星期五 上午 08:58
网络上流传的关于JS释放内存的方式~ 大概就是只说过。将变量使用以后设置为 null,但是IE的GC是当鼠标点击最小化按钮时发生~~ 也就是说我们从程序上看已经释放了内存其实之前更本没有释放~~~

研究 jsvm 的时候,发现 js.lang.System 里面定义了 gc() 方法

System.gc = function ()
{
  if (System.isIeBrowser())
  {
    CollectGarbage();
    setTimeout("CollectGarbage();", 1);
  }
}

CollectGarbage() 好像是ie特有的一个函数,为什么通过setTimeout的方式调用,可能是防止上下文中的过程变量仍然有效的原因吧!
posted on 2006-11-23 21:00 Yemoo'S JS Blog 阅读(3835) 评论(1)  编辑 收藏 引用 所属分类: javascript语法基础

评论

# re: JavaScript之内存释放(推荐)【摘自Oscar's 牛牛】 2008-06-07 23:56 BIDAAS
“但是IE的GC是当鼠标点击最小化按钮时发生”,
不明白说的什么,难道只有GC在用户点最小化才执行吗?
我看未必,对于局部变量当然它是优先释放对象,因为程序已经没有任何地方对它有有效的引用了,回收这些内存不会发生任何问题,而你设置它们为空其实是多余。回收全局的对象必须设置为空,否则永不回收,除非关闭窗口。而GC的执行时间是不固定的,它是不定期的检查内存并清理掉那些不用的内存堆栈中的对象。由于GC的执行效率并不高,没有任何人建议您手动调用这些操作。  回复  更多评论
  

只有注册用户登录后才能发表评论。