垃圾回收机制,简称GC(garbage collection),会定期(周期性)地回收那些不再使用的变量,然后释放其内存。
而内存占用的情况有很多:
1、变量
2、字面量对象声明:var obj = {};
3、数组声明 : var arr = [];
4、函数声明: function fun(){};
上述情况都会占用内存。
通常的解决方法:标记清除;引用计数。
1.标记清除:盒子原理,当变量要进入执行环境,则将该变量标记为“进入环境”,该标记表示不能清除回收该变量,当变量离开执行环境之后,则标记为“离开环境”,进行回收,释放内存。
2.引用计数:值占用数,当该变量作为值被赋其他变量之后,则引用计数+1,当其他变量改变被其他赋值之后,则该变量引用计数-1,当引用计数为0的时候,进行回收清除。(不常用)
内存管理优化方法:
例如setTimeout(function(){},1000),每次执行setTimeout都会创建一个function对象,所以将function函数的功能提取出来。这样不用每次都创建对象,内存占用较少。