美文网首页
V8 堆内存

V8 堆内存

作者: LeonLi_9ea5 | 来源:发表于2019-06-24 14:58 被阅读0次

一张图看懂 V8 堆内存

V8_heap.png

要点

  1. V8 中大部分对象都是直接在堆上创建的

  2. V8 将堆划分出几个不同的空间,概括为两大类: 新生代和老生代

    • 新生代的大小约为 1~20MB

    • 新生代中的对象频繁诞生和死亡

    • 新生代采用 Scavenge 算法回收,老生代中采用 Mark-Sweep-Compact 回收

  3. 所有的空间都分页,页的大小通常为 1MB ,页在 V8 和操作系统之间的转移由 Memory Allocator 管理

    • 新生代的内存页是连接的

    • 老生代的内存页是分散的,以链表形式串联

  4. 新生代分为两个 semispace,每次只使用其中之一,在 GC (Garbage Collection)时从根对象开始做 BFS(Breadth-First-Search),将存活的对象转移到另一半中,存活 2 次以上的晋升至老生代 (old space),随后另一半空间释放。

  5. 除堆上的内存外,V8 还允许用户自行管理对象的内存,如 Nodejs 中的 Buffer。这些外部内存由外部代码维护并通过 API 上报大小给 V8,在 GC 时会被 V8 跳过。当然也可以向 V8 注册 GC 回调来回收这些内存。

相关文章

  • V8 堆内存

    一张图看懂 V8 堆内存 要点 V8 中大部分对象都是直接在堆上创建的 V8 将堆划分出几个不同的空间,概括为两大...

  • v8引擎的垃圾回收

    v8引擎的垃圾回收机制 如何查看node内存使用情况? v8的内存分类 堆内存 // 对象、字符串、闭包新生代内存...

  • V8的内存管理与垃圾回收(二)

    上一篇文章中,我整理介绍了V8的新生代堆内存的垃圾回收策略,这里再简单概述下:V8将堆内存主要划分为新生代和老生代...

  • v8引擎垃圾回收机制-内存与结构

    v8引擎内存结构 内存分配:栈空间,堆空间 栈空间:代码运行的环境(逻辑运行的环境 堆空间:所有函数和引用类型数据...

  • V8垃圾回收机制

    V8主要的垃圾回收算法 V8的垃圾回收策略主要基于分代式垃圾回收机制,主要将内存分为新生代和老生代,V8堆的整体内...

  • 2019-05-30

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

  • 2. Buffer内存分配

    Buffer对象的内存分配不是在V8的堆内存中,而是在Node的C++层面实现内存的申请的。因为处理大量的字节数据...

  • 内存机制

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

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

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

  • V8 GC机制

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

网友评论

      本文标题:V8 堆内存

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