V8 内存管理

这篇博客探讨了V8引擎的内存管理,包括内存查看、新生代和老生代内存分配。新生代内存使用From和To空间进行垃圾回收,对象在满足一定条件后晋升至老生代。老生代的垃圾回收采用标记清除和标记合并两种策略,以应对不同的内存回收需求。
摘要由CSDN通过智能技术生成

一、内存查看

console.log(
    '\n node分配到的总内存 rss: ' + mem.rss,
    '\n 堆内存 heapTotal: ' + mem.heapTotal,
    '\n 已使用的内存 heapUsed: ' + mem.heapUsed,
    
    '\n node中额外申请到的c++内存: ' + mem.external,

    '\n 操作系统总内存: ' + os.totalmem(),
    '\n 操作系统空闲内存: ' + os.freemem()
)

注意单位都是字节。

二、内存分配

V8 会将系统分配给它的内存分为新生代内存和老生代内存,新生代内存用于存放存活时间较短的对象,所以这里的内存会被 gc 频繁的回收。而老生代内存用于存放存活时间久的对象,二者的垃圾回收策略也各不相同。

三、新生代

新生代将内存一分为二,一块处于使用中(From),一块处于闲置中(To)。gc 的过程大致如下

  1. 新对象首先进入 From
  2. gc 时,将 From 中存活的对象复制到 To 中,并给这些变量加个标记,表示它已经经历过一次 gc 了,而且存活下来了(现在 To 空间中的变量都是需要保留下来的)
  3. 清除 From 空间
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值