关于IE8内存泄漏BUG及解决方案

0、背景

目前在公司某系统发现在XP环境下IE8的系统下进行长时间运行会产生大量垃圾未被回收,用内存分析工具进行分析了Jprofiler,发现了IE8的BUG,进行了DEMO测试,借鉴了网上诸多解决方案,总结诸家论点最终产生的解决方案,感谢各界大佬!

1、问题分析

1、IE 在 iframe 元素的回收方面存在着 bug,在通常情况下应该将该元素的src属性值修改为”abort:blank”,并手工将其从 DOM 树上移除,然后把脚本中引用它的变量置空并调用 CollectGarbage() 就可以避免 iframe 不能正常回收所造成的内存泄露。
2、在IE8中,生成特定 DOM 节点所占用的内存是不会被释放的,即使这些节点被删除内存也不会被释放。内存泄露的节点类型包括:form、button、input、select、textarea、a、img等。

2、Javascript 的垃圾回收机制

Javascript具有自动垃圾回收机制(GC:Garbage Collecation),也就是说,执行环境会负责管理代码执行过程中使用的内存。

原理:垃圾收集器会定期(周期性)找出那些不在继续使用的变量,然后释放其内存。

JavaScript垃圾回收的机制很简单:找出不再使用的变量,然后释放掉其占用的内存,但是这个过程不是实时的,因为其开销比较大,所以垃圾回收器会按照固定的时间间隔周期性的执行。

不再使用的变量也就是生命周期结束的变量,当然只可

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值