zoukankan      html  css  js  c++  java
  • javascript与内存

    1. 致命的string

         javascrip的string,类似.net 的string,大string操作费CPU,费内存.

         替换方法:Array,但首先应该避免大string的各种操作.

    2.unwise的DOM

          重复的innerhtml操作&createElement操作对内存的消耗巨大.
          innerHTML操作如果处理不当,很容易形成memory leak. 

          替换方法:

                1.不要使用innerhtml.

                2. 在RemoveElement前,从下往上一层层Remove掉ElementElement上面的事件.
                3. 不要使用RemoveElement方法,而是先在页面上建一个垃圾箱(div),然后将element先添加到垃圾箱,再执行垃圾箱.innerHTML="";
                4. 确保Dom结构的完整.

    3.变量

         过多的外部变量会导致内存泄露成为必然.

         替换方法:

                1.将外部变量包装成一个大对象,并在必要的时候先调用其dispose方法,并设置大对象为null,方便GC及时清除内存.

                2.定义局部变量时,别忘记了var ,并在作用域结束前,显式的设置该变量,及引用该变量的对象为null,方便GC及时清除内存.

                3. delete根本不是那回事,别用了.

    4. 复杂的调用引用逻辑

          复杂的调用逻辑,无疑会增加对象引用的复杂度,使对象的清理困难重重,引发内存crash.

          替换方法:需要一个良好的设计

    5. 浏览器比较

         在内存管理上从优到差:

         IE, 内存使用率高,

              当变量失效时,后申请的内存会覆盖原失效变量所使用的内存

              支持手动gc(CollectGarbage())

              Debug 内存泄露的工具Drip,sIEve

         firefox, 内存使用率中低

              使函数内的变量,在作用域失效后,仍会占用内存,如需要内存时,不会自动覆盖原内存

              在内存接近约120M时自动gc

         safari, 内存使用率极低,刷新也不会清理内存

  • 相关阅读:
    几种常见SQL分页方式效率比较(转)
    jquery mobile开发笔记之Ajax提交数据(转)
    php 更新array键值
    PHP使用UTF8编码读取ACCESS的乱码问题解决方案(转)
    PropertyGrid控件动态生成属性及下拉菜单 (转)
    山穷水尽出高手,九死一生见功夫
    将MYSQL的GBK数据库转成_UTF-8数据库的简便方法
    CRM销售管理功能
    基于.net开发chrome核心浏览器【一】(转)
    1.Two Sum
  • 原文地址:https://www.cnblogs.com/DataFlow/p/1332219.html
Copyright © 2011-2022 走看看