美文网首页
6.内存泄漏和垃圾回收

6.内存泄漏和垃圾回收

作者: 原来哥哥是万家灯火 | 来源:发表于2020-07-03 12:54 被阅读0次

    内存泄漏是指内存被无效的数据占用,无法被释放。(就像漏掉了一样,越用越少)
    垃圾回收有多种算法,浏览器中常见的有两种:引用计数算法和标记清除算法。

    1.引用计数,netscape navigator3.0最先开始使用。这是最简单、最原始的一种方式。

    当一个引用类型,被赋值给一个变量时,其引用次数就加1,该值再被赋值给另外一个变量时,其值再加1。如果包含这个引用的值又取得了其他值,那么其引用次数-1。

    这几乎是高程上的原话,意思是只针对引用类型,也就是heap上的数据。假设有个引用类型,其指针(就是首字节的地址)是0x0001,那么有多少个变量的值等于这个指针,它的引用次数就是多少。引擎会在这个引用类型上加个count字段,表示它被引用的次数。

    当被引用次数为0时,等到下次垃圾回收的时候,该引用类型占用的内存空间,就会被回收。

    引用计数的缺点是,循环引用时,会出现引用次数无法变成0,导致内存泄漏。IE中BOM和DOM是使用c++以COM(组件对象模型)方式实现的,COM的gc机制是引用计数,所以可能出现内存泄漏。

    2.标记清除算法
    这个不懂,只知道会对数据进行可达性分析,不可达的引用类型会被清除掉。

    相关文章

      网友评论

          本文标题:6.内存泄漏和垃圾回收

          本文链接:https://www.haomeiwen.com/subject/cqksqktx.html