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, 内存使用率极低,刷新也不会清理内存

原文地址:https://www.cnblogs.com/DataFlow/p/1332219.html