垃圾回收 及 内存泄漏

Posted 实践出真知

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了垃圾回收 及 内存泄漏相关的知识,希望对你有一定的参考价值。

1、垃圾回收的策略通常有两中——标记清除 和 引用计数 。      (详细介绍请参考J《avaScript高级程序设计》)

2、js中最常用的垃圾收集方式是标记清除。但是COM对象(BOM和DOM对象就是使用C++以COM对象的形式实现的)垃圾收集机制采用的就是引用计数策略。

3、使用引用计数策略, 在函数中出现循环引用的时候,当函数执行完毕,可是函数里的变量引用计数不为零,垃圾回收机制无法回收,这个对象将一直存在内存中。如果这个函数被多次调用的话,就会导致大量内存得不到回收。从而出现内存泄漏问题。

4、解决循环引用的问题,在不使用变量的时候,手工断开原生javascript对象(获取DOM对象的变量)与DOM元素之间的链接。用element = null;

 

 

总结(个人观点):原生js对象不存在内存泄漏问题(原生js对象常用标记清除的垃圾回收策略),引起内存泄漏的问题主要还是在函数中对DOM的操作,同时DOM对象的属性指向函数的对象。内存泄漏和闭包没一点关系,只是闭包的结构操作函数有优势,不注意就会在闭包中出现对DOM的循环引用。

 

 

具体  闭包函数的问题  有空看  JavaScript高级程序设计

以上是关于垃圾回收 及 内存泄漏的主要内容,如果未能解决你的问题,请参考以下文章

js object类型转换 内存泄漏 垃圾回收机制

Java会造成内存泄漏,多态,垃圾回收,clone

Chrome 浏览器垃圾回收机制与内存泄漏分析(未完成)

面试题~ 垃圾回收机制得优点以及原理

Java内存与垃圾回收篇(对象内存与垃圾回收机制)下篇

内存泄漏与垃圾回收机制