垃圾回收:将内存中不再使用的数据进行清理,释放内存空间。V8将内存分为了新生代空间和老生代空间。
- 新生代空间:用于存活时间较短的对象。在64位操作系统有32MB的空间,32位操作系统有16MB空间。
新生代空间又分为两个空间:from空间和to空间。
Scavenge GC算法:当from空间被沾满时,启动GC算法。
1、将存活的对象从from空间转移到to空间。
2、清空from空间
3、from space 与 to space 互换
4、完成一次新生代GC - 老生代空间:用于存货事件较长的对象。在64位操作系统有1400MB空间,在32位操作系统有700MB空间。
从新生代转移到老生代空间的条件:
1、经历一次以上的Scavenge GC的对象
2、当 to space 体积超过25%
标记清除算法:标记存活的对象,未被标记的则会被释放。
1、增量标记:小模块标记,在代码执行间隙执行,GC会影响性能。
2、并发标记:不阻塞JS的执行。
压缩算法:将内存中清除后导致的碎片化对象往内存的一端移动,解决内存的碎片化。