• 内存泄露


    Js内存泄漏及解决方案

    在IE下的JS编程中,以下的编程方式都会造成即使关闭IE也无法释放内存的问题,下面分类给出:
    1、给DOM对象添加的属性是一个对象的引用。范例: var MyObject = {}; document.getElementById('myDiv').myProp = MyObject; 解决方法: 在window.onunload事件中写上: document.getElementById('myDiv').myProp = null;
    2、DOM对象与JS对象相互引用。范例: function Encapsulator(element) { this.elementReference = element; element.myProp = this; } new Encapsulator(document.getElementById('myDiv')); 解决方法: 在onunload事件中写上: document.getElementById('myDiv').myProp = null;
    3、给DOM对象用attachEvent绑定事件。范例: function doClick() {} element.attachEvent("onclick", doClick); 解决方法: 在onunload事件中写上: element.detachEvent('onclick', doClick);
    4、从外到内执行appendChild。这时即使调用removeChild也无法释放。范例: var parentDiv = document.createElement("div"); var childDiv = document.createElement("div"); document.body.appendChild(parentDiv); parentDiv.appendChild(childDiv); 解决方法: 从内到外执行appendChild: var parentDiv = document.createElement("div"); var childDiv = document.createElement("div"); parentDiv.appendChild(childDiv); document.body.appendChild(parentDiv);
    5、反复重写同一个属性会造成内存大量占用(但关闭IE后内存会被释放)。范例: for(i = 0; i < 5000; i++) { hostElement.text = "asdfasdfasdf"; } 这种方式相当于定义了5000个属性! 解决方法: 其实没什么解决方法:P~~~就是编程的时候尽量避免出现这种情况咯~~

  • 相关阅读:
    三层架构
    SQL数据库资料整理(2006年)
    SQL基础:常用SQL语句详解(转)
    什么是SOA?
    DOTNET中的SqlHelper类
    C#精髓(WMI完美秀出CPU编号厂商主频电压等全部信息)
    根据分类,每类随机抽取N个(N对每个分类都不一样,SQL问题)
    C#,你真的入门了吗
    .Net平台开发的技术规范与实践精华总结 (转)
    学习Java需要达到的30个目标
  • 原文地址:https://www.cnblogs.com/zhangwenkan/p/4263331.html
Copyright © 2020-2023  润新知