美文网首页
Chrome-垃圾回收

Chrome-垃圾回收

作者: 依然还是或者其他 | 来源:发表于2020-08-04 22:19 被阅读0次

垃圾回收机制

在Chrome存在垃圾回收机制,用于回收内存。

引用计数

引用计数就是跟踪记录每个值被引用的次数,当一个值的引用次数为0时,就会被回收。
当如果存在循环引用的时候,就会出现问题,无法回收。

标记清除

将”对象是否不再需要“简化定义为”对象是否可以获得“

假定设置一个叫做根(root)的对象,即JavaScript中的全局对象,垃圾回收器将定期从根开始,找所有从根开始引用的对象,然后找这些对象引用的对象...
从根开始,垃圾回收器将找到所有可以获得的对象和收集所有不能获得的对象。

引用计数存在的循环引用就可以解决。

Chrome v8垃圾回收策略

v8中将内存分为新生代老生代,新生代的对象为存活时间较短的对象,老生代的对象为存活时间较长的对象。

新生代

在新生代都是生命周期短的对象,只保存一个指向内存空间的指针,根据分配对象的大小递增指针,当存储空间快要满时,进行GC

在分代的基础上,新生代的对象主要通过 Scavenge 算法进行垃圾回收,在 Scavenge 具体实现中,主要采用了一种复制的方式的方法—— Cheney 算法。
Cheney算法将内存一分为二,一块处于使用状态,一块处于闲置状态。
处于使用状态的空间称为From空间,处于闲置状态的空间称为To空间

当进行GC时,会检查From空间存活的对象,将其复制到To空间中,而非存活对象的空间将被释放。复制完成后,From空间和To空间 就发生了对换。
(即 原先使用状态的From空间变成了To空间,闲置状态的To空间变成了From空间)

当一个对象经过多次复制后依然存活,会被认为是长生命周期的对象,然后被移动到老生代进行管理;或者当复制一个对象到To空间时,空间占用过大,超过25%时,此对象也会被移动老生代中。

老生代

在老生代的对象中,主要采用标记-清除、标记-整理来进行管理。由于老生代中存活的对象较多,所以像新生代中的Scavenge 算法就并不适用。

老生代在GC时,通过将存活的对象标记为存活对象,将存活对象进行整理置一侧,另一侧就是非存活对象,再进行统一回收非存活对象。

无论是在新生代中的算法还是老生代中的算法,都是需要将正在执行的JavaScript逻辑进行暂停的,即称为全停顿

新生代存活对象少,所以全停顿影响较小;老生代存活对象多,如果进行全部停顿处理,影响较大。所以在老生代进行了增量操作,即非一次全部完成,采用逐步逐步的进行操作,减少全停顿的影响。

内存泄漏

当应用程序不再需要占用内存时,出于某些原因,内存没有被回收,就会造成内存泄漏。

内存泄漏原因

  • 缓存
  • 全局变量
  • 闭包
  • DOM引用
  • 未销户的定时器和回调函数

参考

JavaScript——内存管理
精读《JS 中的内存管理》
JS专题之垃圾回收
Chrome 浏览器垃圾回收机制与内存泄漏分析

相关文章

  • Chrome-垃圾回收

    垃圾回收机制 在Chrome存在垃圾回收机制,用于回收内存。 引用计数 引用计数就是跟踪记录每个值被引用的次数,当...

  • 简单理解垃圾回收

    什么是垃圾回收? 垃圾回收的是什么? 如何判断为垃圾? 垃圾是怎样被回收的? 垃圾回收哪些区域的内存? 什么是垃圾...

  • JVM(二) GC算法与分代回收策略

    可达性分析 GCRoot场景 垃圾回收算法 分代回收策略 引用 垃圾回收 垃圾回收(Garbage Collect...

  • JVM调优之垃圾定位、垃圾回收算法、垃圾处理器对比

    谈垃圾回收器之前,要先讲讲垃圾回收算法,以及JVM对垃圾的认定策略,JVM垃圾回收器是垃圾回收算法的具体实现,了解...

  • 01垃圾回收机制

    垃圾回收(Garbage Collection,GC) 垃圾回收就是释放垃圾占用的空间 内存的动态分配和垃圾回收,...

  • Java 垃圾收集(GC)浅谈

    Java 垃圾收集(GC)浅谈 为什么需要垃圾回收?哪些内存需要回收?什么时候回收?如何回收? 为什么需要垃圾回收...

  • JVM垃圾回收机制

    JVM垃圾回收 整体思维导图 带着问题理解JVM垃圾回收机制 Java为什么需要垃圾回收机制; 回收哪部分垃圾; ...

  • 垃圾回收

    如何查看当前JVM使用的垃圾回收器? 如何指定使用CMS回收? 如何打印回收日志? 垃圾回收过程 CMS垃圾回收的...

  • JVM常见垃圾回收器介绍

    垃圾回收器简介 在新生代和老年代进行垃圾回收的时候,都是要用垃圾回收器进行回收的,不同的区域用不同的垃圾回收器。分...

  • JavaScript的垃圾回收机制

    大纲 1、认识垃圾回收机制2、垃圾回收机制的原理3、垃圾回收机制的标记策略4、垃圾回收机制与内存管理 1、认识垃圾...

网友评论

      本文标题:Chrome-垃圾回收

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