JavaScript性能优化之V8垃圾回收策略

    科技2022-07-14  114

    前言
    本篇文章主要是介绍,JavaScript性能优化之V8垃圾回收策略的相关内容
    V8垃圾回收策略
    1.采用分代回收的思想 2.内存分为新生代和老生代 3.针对不同对象采用不同的算法
    V8垃圾回收策略演示图

    在上图所示中,内存分为两部分,一个是新生代一个是老生代,两个区域采用不同的GC算法
    V8中常用的GC算法
    1.分代回收 2.空间复制 3.标记清除 4.标记整理 5.标记增量
    V8内存分配
    1.V8内存空间一分为二 2.小空间用于存储新生代对象(32M|16M) 3.新生代指的是存活时间较短的对象
    新生代对象回收实现
    1.回收过程采用复制算法 + 标记整理算法 2.新生代内存区分为二个等大小空间 3.使用空间为from,空闲空间为to 4.活动对象存储于from空间 5.标记整理后将活动空间拷贝至to 6.form和to交换空间完成释放
    回收细节说明
    1.拷贝过程中可能出现晋升 2.晋升就是将新生代对象移动至老生代 3.一轮GC还存活的新生代需要晋升 4.To空间的使用率超过25%
    v8如何回收老生代对象
    老生代对象说明 1.老生代对象存放在老生代区域 2.64位操作系统内存最大为1.4G 32位操作系统内存最大为700M 3.老生代对象就是指存活时间较长的对象
    老生代对象回收实现
    1.主要采用标记清除算法、标记整理算法、增量标记算法 2.首先使用标记清除算法完成垃圾空间的回收 3.采用标记整理算法进行空间优化 4.采用增量标记算法进行效率优化
    细节对比
    1.新生代区域垃圾回收使用的是空间换时间 2.老生代垃圾回收不适合使用复制算法
    增量标记算法如何实现垃圾回收

    本质上就是程序执行和GC算法交替执行

    谢谢观看,如有不足,敬请指教

    Processed: 0.013, SQL: 8