zoukankan      html  css  js  c++  java
  • JS垃圾回收机制的一些笔记

    垃圾回收器会定期(周期性)找出不再继续使用的变量,然后释放其内存,各个浏览器的周期不同,常用的垃圾回收机制有这两种。
     
    标记清除(常规)
        浏览器将所有引用变量加上标记,然后将全局引用的变量以及闭包的标记清除。在执行js代码的时候会进入一个执行环境,当离开当前执行环境时,当前执行环境内标记的变量会被清除,大多数浏览器都是使用这种方式。
    引用计数(IE7/8,Netscape Navigator3)
        每次引用一个变量,都会在引用计数中+1,如果这个值赋给另一个引用,那么再+1,相反,如果当引用这个值的变量引用了其他的变量,那么就会-1,当引用数量为0时,会被垃圾回收器清除。
     
    引用计数的问题——>(循环引用)
        (IE中有一部分不是使用的原生的js对象,使用的是C++模拟的COM对象来模拟,它的垃圾回收机制是使用的引用计数,当产生引用循环时,就会大大占用内存。)
    解决办法——>手动解除引用循环
        在使用完之后手动将其设置为null,将变量设置为null意味着切断变量与它此前引用的值的联系,当垃圾回收器下次运行,就会删除这些值并回收它们占用的内存
  • 相关阅读:
    线程安全
    转 接口和抽象类 虚方法 有什么区别
    转 面向对象的三个基本特征
    转载 泛型
    遍历list,字典
    转 拉姆达表达式,委托、匿名方法、Lambda表达式的演进
    int byte转换
    委托,匿名方法
    带参数线程,不带参数线程
    const readonly
  • 原文地址:https://www.cnblogs.com/asablog/p/11608082.html
Copyright © 2011-2022 走看看