堆内存
对象数据类型或者函数数据类型在定义的时候首先都会开辟一个堆内存,堆内存有一个引用的地址,如果外边有变量引用了这个地址,我们就说这个内存被占用了,此时它就不会被销毁了。
如果,我们想要销毁这个引用,只需要把所有引用它的变量值赋值为null即可。
浏览器垃圾回收:
如果当前的堆内存,没有被任何东西所占用,那么浏览器会在空闲的时候把它销毁...
IE和火狐浏览器使用计数器原理,监控引用,如果计数器为零,就会清理该堆内存。但是这个工作机制不太靠谱,会引起内存泄漏问题。
谷歌浏览器采用的是每隔一段事件会主动看一次,如果某个堆内存没有被占用了,就会手动清理。
栈内存
js中栈内存分为两种:一种是全局作用域中的,只有当页面关闭后才会销毁。
第二种时当函数执行时形成的私有的作用域,它的销毁分为两种情况。
// 1.当前作用域返回一个堆内存地址被外部引用。
function sum() {
var a = 1,b =3;
return function () {
return a+b;
}
}
var add = sum()
// 在一个私有作用于中,给一个元素的事件绑定方法,这个作用于不销毁
内存销毁.png