V8引擎回收机制 内存泄露

Posted yayaxuping

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了V8引擎回收机制 内存泄露相关的知识,希望对你有一定的参考价值。

 一、垃圾回收:将内存不在使用的数据进行清理,释放内存空间
  v8将内存分为新生代空间和老生代的空间
  新生代空间:用于存活较短的对象
  :又分为二个空间:from空间和to空间
  :Scavenge GC算法:当 from 空间被占满时,启动 GC 算法
   存活的对象从 from space 转移到 to space
   清空from space
   from space和to space交互
   完成一次新生代GC
  老生带空间:用于存活时间较长的对象
  从新生代空间 转移到 老生代空间条件
     经历过一次以上的Scavenge GC的对象
     当to space空间体积超过了25%
  标记清除算法: 标记存活对象,未被标记会被释放
   增量标记:  小模块标记,在代码执行间隙执行,GC会影响性能
   并发标记(最新技术): 不阻塞js执行
  压缩算法:将内存中清除后导致的碎片化对象往内存堆的一端移动,解决内存的碎片化
  二、 内存泄露
  1,意外全部变量:无法被回收
  2,定时器:无法被正确的关闭,导致所引用变量无法被释放
  3,事件监听,没有正确的被销毁,
  4,闭包,会导致父级的变量无法被释放 
  5,dom的引用,dom元素被删除了,内存中的引用未被删除

以上是关于V8引擎回收机制 内存泄露的主要内容,如果未能解决你的问题,请参考以下文章

浅谈Chrome V8引擎中的垃圾回收机制

JavaScript中的垃圾回收机制与内存泄露

Java中的内存泄露 和 JVM GC(垃圾回收机制)

JS高程中的垃圾回收机制与常见内存泄露的解决方法

前端内存泄露浅谈

Java中会有内存泄露吗?