v8引擎如何回收垃圾

本文探讨了V8引擎的内存回收机制,包括新生代和老生代的垃圾回收算法,如Scavenge和Mark Compact。同时,介绍了如何查看V8内存使用情况,并提供了内存优化的实例和技巧,如避免全局变量、正确处理缓存和大文件操作。
摘要由CSDN通过智能技术生成

1.V8引擎如何回收垃圾

1.1 为什么要关注内存

  • 防止页面占用内存过大,引起客户端卡顿、甚至无响应
  • node使用的也是v8,内存对于后端服务的性能至关重要。因为服务的持久性,后端更容易造成内存溢出。
  • 面试装逼神奇。

1.2 V8引擎内存回收机制

1.2.1 v8的内存分配

在这里插入图片描述

1.1.2 内存大小
  1. 在 64 位的机器上,默认最大操作的对象大小约为 1.4G,在 32 位的机器上,默认最大操作的对象大小约为 0.7G。
  2. 64位下新生代的空间为32MB,老生代为1400MB。
  3. 32位下新生代的空间为16MB,老生代为700MB

v8内存小的原因:

  1. js设计之初是为了浏览器,前端的特点-不持久化,执行一遍就回收了,1.4G完全够用;
  2. js回收内存的时候,会暂停执行;如果回收内存过大,可能会导致执行卡顿时间过长。
1.1.3 垃圾回收算法
  • 新生代垃圾回收
    • 新生代内存空间主要用来存放存活时间较短的对象;
    • 新生代内存中的垃圾回收主要通过Scavenge算法进行,具体实现主要采用了Cheney算法。Cheney将内存空间一分为二,处于使用中的Semispace叫做From,处于闲置中的Semispace叫做To。
    • 当我们分配对象时,先在From空间中进行分配;
    • 在垃圾回收运行时,会检查From空间中的存活对象,这些存活对象将被复制到To空间中;而非存活对象占用的空间将会被释放。
    • 完成复制后,From空间和To空间的角色发生对换。
    • 最后进行垃圾回收时,会将To空间的内存进行释放。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值