文档介绍:Js 内存泄漏及解决方案在 IE 下的 JS 编程中,以下的编程方式都会造成即使关闭 IE 也无法释放内存的问题,下面分类给出: 1 、给 DOM 对象添加的属性是一个对象的引用。范例: var MyObject = {}; ('myDiv').myProp = MyObject; 解决方法: 在 事件中写上: ('myDiv').myProp = null; 2、 DOM 对象与 JS 对象相互引用。范例: function Encapsulator(element) { = element; = this; } new Encapsulator(('myDiv')); 解决方法: 在 onunload 事件中写上: ('myDiv').myProp = null; 3 、给 DOM 对象用 attachEvent 绑定事件。范例: function doClick() {} ("onclick", doClick); 解决方法: 在 onunload 事件中写上: ('onclick', doClick); 4 、从外到内执行 appendChild 。这时即使调用 removeChild 也无法释放。范例: var parentDiv = ("div"); var childDiv = ("div"); (parentDiv); (childDiv); 解决方法: 从内到外执行 appendChild: var parentDiv = ("div"); var childDiv = ("div"); (childDiv); (parentDiv); 5 、反复重写同一个属性会造成内存大量占用( 但关闭 IE 后内存会被释放) 。范例: for(i = 0;i< 5000; i++) { = "asdfasdfasdf"; } 这种方式相当于定义了 5000 个属性! 解决方法: 其实没什么解决方法~~~ 就是编程的时候尽量避免出现这种情况咯~~ 说明: 1 、以上资料均来源于微软官方的 MSDN 站点,链接地址: http://msdn./librar ... 大家可以到上面这个地址中看到详细的说明,包括范例和图例都有。只是我英文不太好, 看不太懂, 如果我上述有失误或有需要补充的地方请大家指出。 2 、对于第一条,事实上包括 = funcRef 这种写法也算在其中,因为这也是一个对对象的引用。在页面 onunload 时应该释放掉。 3、对于第三条,在 MSD N 的英文说明中好像是说即使调用 detachEven t 也无法释放内存,因为在 attachEvent 的时候就已经造成内存“ LEAK ”了, 不过 detachEvent 后情况还是会好一点。不知道是不是这样,请英文好的亲能够指出。 4 、在实际编程中,这些内存问题的实际影响并不大,尤其是给客户使用时, 客户对此绝不会有察觉, 然而这些问题对于程序员来说却始终是个心病--- 有这样的 BUG 心里总会觉得不舒服吧?能解决则给与解决,这样是最好的。事实上我在 webfx. 这样顶级的 JS 源码站点中, 在它们的源码里都会看到采用上述解决方式进行内存的释放管理。理解并解决 IE 的内存泄漏方式 Web 开发的发展在过去一些的时候, Web 开发人员并没有太多的去关注内存泄露问题。那时的页面间联系大都比较简单, 并主要使用不同的连接地址在同一个站点中导航,这样的设计方式是非常有利于浏览器释放资源的。即使 Web 页面运行中真的出现了资源泄漏, 那它的影响也是非常有限而且常常是不会被人在意的。今天人们对 Web 应用有了高更的要求。一个页面很可能数小时不会发生 URL 跳转, 并同时通过 Web 服务动态的更新页面内容。复杂的事件关联设计、基于