美文网首页
V8内存管理

V8内存管理

作者: JerrySi | 来源:发表于2021-12-16 23:53 被阅读0次

考虑到浏览器中使用 和 内存回收的效率。 V8限制了内存大小:
64G:1.5G
32位:800M

V8垃圾回收策略

  • 采用分代回收的思想
  • 内存分为新生代和老生代
  • 不同对象采用不同的算法


V8涉及到的GC算法

  • 分代回收
  • 空间复制
  • 标记清除
  • 标记整理
  • 标记增量

V8内存分配

  • 空间一分为二
  • 小空间存储新生代对象 (32M | 16M)
  • 新生代是存活时间较短的对象 (局部变量等)
  • 老年代对象存放在右侧区域 (1.4G | 700M)
  • 老年代是存活时间较长的对象(全局变量、block内变量等)

新生代内存回收

  • 回收过程采用复制算法 + 标记整理
  • 新生代内存区分为二个等大小空间
  • 使用空间是From, 空闲空间是To
  • 活动对象存储于From空间
  • 标记整理后将活动对象拷贝到To
  • From 和 To 交换空间完成释放
  • 拷贝过程中可能出现晋升
  • 晋升就是新生代对象移动到老生代
  • 一轮GC还存活的新生代需要晋升
  • To空间使用率超过25%需要晋升 Why?

老生代内存回收

  • 标记清除、标记整理、增量标记算法
  • 首先使用标记清除完成垃圾空间回收
  • 采用标记整理进行空间优化
  • 采用增量标记进行效率优化

当前内存不够To晋升的时候,就会先进行标记整理


增量标记图示

新生代 VS 老生代

  • 新生代 空间换时间
  • 老生代 不适合复制算法

老生代空间大,复制成本很高

总结

  • 一款主流的JS执行引擎
  • 有内存设置上限
  • 采用分代回收来实现垃圾回收
  • 内存分为新生代 & 老生代
  • 垃圾回收的常见GC算法

相关文章

  • 2019-05-30

    1. V8内存管理和相关问题 Node.js基于V8引擎,其内存管理就是V8的内存管理。 V8内置了自动垃圾回收(...

  • V8 内存管理和垃圾回收机制总结

    这篇文章主要介绍 V8 的内存管理和垃圾回收知识。 V8 内存管理及垃圾回收机制浅析 由于 V8 引擎的原因,No...

  • V8 GC机制

    这篇文章主要介绍 V8 的内存管理和垃圾回收知识。 V8 内存管理及垃圾回收机制浅析 由于 V8 引擎的原因,No...

  • 优化你的内存

    这篇文章主要介绍 V8 的内存管理和垃圾回收知识。(总结来自网易课堂) V8引擎内存回收机制 为什么我们要关注内存...

  • 常见GC算法与V8引擎

    内存管理 垃圾回收与常见GC算法 V8引擎的垃圾回收 Performance工具 代码优化实例 内存管理 为什么要...

  • 如何避免内存泄漏 - 2023-02-18

    V8引擎的内存限制 虽然V8引擎帮助我们实现了自动的垃圾回收管理,解放了我们勤劳的双手,但V8引擎中的内存使用也并...

  • V8内存管理

    考虑到浏览器中使用 和 内存回收的效率。 V8限制了内存大小:64G:1.5G32位:800M V8垃圾回收策略 ...

  • 【图解篇】前端内存管理

    前端为什么要关注内存 防止占用内存过大,造成页面卡顿,甚至无响应 Node.js 使用 V8 引擎,内存管理对于服...

  • 内存机制

    Node内存由V8进行分配的部分和Node自行分配的部分。 V8的垃圾回收机制与内存限制 V8的内存限制   因为...

  • javaScript 性能优化(学习笔记)

    内容概要 内存管理 垃圾回收和常见的GC算法 V8引擎的垃圾回收 Performance 工具 代码优化实例 内存...

网友评论

      本文标题:V8内存管理

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