为什么产生垃圾?
栈,堆里面东西越来越多
var a=3 栈中存储的普通变量,不会造成崩溃,浏览器自动清除
解决方法
垃圾收集器会**定期(周期性)**找出那些不在继续使用的变量,然后释放其内存。但是这个过程不是实时的,因为其开销比较大,所以垃圾回收器会按照固定的时间间隔周期性的执行。
在栈中同时大量创建 创建对象,数组 减少栈中变量数量
堆中数据有没有被引用 当设为 null 断开引用 数据就会从堆中回收
var o={a:1}
o=null
将栈中变量o 设置为null 表示不在引用对象,然后将堆中这个对象的引用列表中的这个变量去除
如果说一个对象被多个变量引用,只有将所有引用该对象的变量全部设置为null才可以被垃圾回收
只有存储引用地址的变量才需要设置null来做垃圾标识
大量的不使用的引用对象,没有被标识为null 并且还在不断的生成和丢弃 就会造成内存泄漏