03、内存释放和作用域销毁

堆内存

对象数据类型或者函数数据类型在定义的时候首先都会开辟一个堆内存,堆内存有一个引用的地址,如果外边有变量引用了这个地址,我们就说这个内存被占用了,此时它就不会被销毁了。
如果,我们想要销毁这个引用,只需要把所有引用它的变量值赋值为null即可。

浏览器垃圾回收:

如果当前的堆内存,没有被任何东西所占用,那么浏览器会在空闲的时候把它销毁...
IE和火狐浏览器使用计数器原理,监控引用,如果计数器为零,就会清理该堆内存。但是这个工作机制不太靠谱,会引起内存泄漏问题。
谷歌浏览器采用的是每隔一段事件会主动看一次,如果某个堆内存没有被占用了,就会手动清理。

栈内存

js中栈内存分为两种:一种是全局作用域中的,只有当页面关闭后才会销毁。
第二种时当函数执行时形成的私有的作用域,它的销毁分为两种情况。

//  1.当前作用域返回一个堆内存地址被外部引用。
function sum() {
    var a = 1,b =3;
    return function () {
        return a+b;
    }
}
var  add = sum()
// 在一个私有作用于中,给一个元素的事件绑定方法,这个作用于不销毁

内存销毁.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容