V8垃圾回收机制

在V8中,所有Javascript对象都是通过堆来进行内存分配的,然而在Node中通过Javascript使用内存时就会发现只能使用部分内存。为什么会有这个限制呢?深层原因是V8的垃圾回收机制的限制。按照官方的说法,以1.5GB的垃圾回收堆内存为例,V8做一次小的垃圾回收需要50ms以上,做一次非增量式的垃圾回收甚至要1s以上。这是垃圾回收中引起Javascript线程暂停执行的时间,在这样的花销下,应用的性男女和响应能力都会直线下降。所以能直接限制堆内存是一个很好的选择。

V8垃圾回收机制

在介绍垃圾回收机制之前,我们先来谈谈垃圾回收策略。

v8的垃圾回收策略是基于分代式垃圾回收机制。在实际应用中,对象的生存周期长短不一·,不同的算法只能针对特定情况具有最好的效果。为此,现代的垃圾回收算法中按对象的存活时间将内存的垃圾回收进行不同的分代,然后分别对不同分代的内存施以更高效的算法。

  • v8内存分代

在v8中,主要将内存分为新生代和老生代两代。新生代中的对象为存活较短的对象,老生代中的对象存活时间较长。

v8堆的整体大小就是新生代所用内存空间加上老生代的内存空间。

  • Scavenge算法(新
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值