V8 内存管理

一、内存查看

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 空间
  4. 将 From 和 To 空间互换,那么
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值