龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > Javascript编程 >

专家提醒 IE下JS编程中需注意内存释放问题(1)(2)

时间:2013-03-06 14:58来源:未知 作者:admin 点击:
分享到:
说明: 1、以上资料均来源于微软官方的MSDN站点,链接地址: http://msdn.microsoft.com/librar...e_leak_patterns.asp 大家可以到上面这个地址中看到详细的说明,包括

说明:

1、以上资料均来源于微软官方的MSDN站点,链接地址:
http://msdn.microsoft.com/librar...e_leak_patterns.asp
大家可以到上面这个地址中看到详细的说明,包括范例和图例都有。只是我英文不太好,看不太懂,如果我上述有失误或有需要补充的地方请大家指出。

2、对于第一条,事实上包括element.onclick=funcRef这种写法也算在其中,因为这也是一个对对象的引用。在页面onunload时应该释放掉。

3、对于第三条,在MSDN的英文说明中好像是说即使调用detachEvent也无法释放内存,因为在attachEvent的时候就已经造成内存“LEAK”了,不过detachEvent后情况还是会好一点。不知道是不是这样,请英文好的亲能够指出。

4、在实际编程中,这些内存问题的实际影响并不大,尤其是给客户使用时,客户对此绝不会有察觉,然而这些问题对于程序员来说却始终是个心病---有这样的BUG心里总会觉得不舒服吧?能解决则给与解决,这样是最好的。事实上我在webfx.eae.net这样顶级的JS源码站点中,在它们的源码里都会看到采用上述解决方式进行内存的释放管理。

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

  1. System.gc=function()  
  2. {  
  3. if(System.isIeBrowser())  
  4. {  
  5. CollectGarbage();  
  6. setTimeout("CollectGarbage();",1);  
  7. }  

CollectGarbage()是ie特有的一个释放内存函数

精彩图集

赞助商链接