V8内存

作者: 脆脆鲨765 | 来源:发表于2020-05-26 17:29 被阅读0次

为什么要关注内存

“页面无响应”内存占太多,太卡

  1. 防止页面占用内存过大,引起客户端卡顿,甚至无响应;
  2. Node使用的也是V8,内存对于后端服务的性能至关重要。因为服务的持久性,后端更容易造成内存溢出,内存超出,服务就宕掉了;

V8引擎内存回收机制

  • 新生代内存空间
  1. From
  2. To
  • 老生代内存空间
V8引擎内存有多大
  1. 总大小:操作系统64位 1.4G,32位0.7G
  2. 新生代:操作系统64位 64MB,32位16MB
  3. 老生代:操作系统16位 1400MB,32位700MB
为什么不占用更多的计算机内存
  1. js设计支出是为浏览器设计,前端特点-不持久化,js代码执行一遍后,不用的就全部回收了。
  2. js回收内存时会暂停代码执行;js回收100MB垃圾,需要6ms。如果过大,则回收的内容也多,将会非常耗时。

到底怎么回收

  1. 新生代简单的说就是复制,存放新产生的变量。首先存放在From空间,满足一定条件后,将还活着的变量复制到To中。然后清空From空间(全部清空节省时间)。往后,To变为From,之前清空的From变成新的To)。牺牲空间换时间。牺牲一半空间,总有一半空间是空的。
  2. 老生代:标记、删除、整理
  3. 新生代占用超过25%就转为老生代
  • 标记:先标记死掉的变量
  • 删除标记过的变量
  • 整理空间(同理于电脑磁盘碎片整理)让内存连续起来(数组在内存中存储必须是连续空间,所以必须要整理)

新生代怎么变成老生代

  1. 定义一个变量,全都在新生代From空间 ==》变量是否被回收过 ==》yes 进入老生带 ==》 no 进入新生代To空间
  2. 定义一个变量,全都在新生代From空间 ==》 To空间是否已经使用过25%() ==》 yes 进入老生带 == 》 进入新生代To空间

V8引擎如何处理内存?(即如何处理变量)

windoe.performance // 查看内存使用情况
Node- process.memoryUsage()

容易引发内存使用不当的情景

  1. 滥用全局变量
  2. 缓存不限制
  3. 操作大文件

相关文章

  • 2019-05-30

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

  • 内存机制

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

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

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

  • V8 GC机制

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

  • v8引擎的垃圾回收

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

  • 优化你的内存

    这篇文章主要介绍 V8 的内存管理和垃圾回收知识。(总结来自网易课堂) V8引擎内存回收机制 为什么我们要关注内存...

  • JavaScript引擎V8中的垃圾回收机制

    目录 认识V8 V8垃圾回收策略 V8常用的GC算法 V8的分代回收V8的内存分配新生代对象回收主要使用算法回收过...

  • 认识V8

    V8介绍 V8是一款主流的JavaScript执行引擎 V8采用即时编译,运行效果快 V8内存设限(64位|1.5...

  • 2020-08-28-Node内存控制

    V8内存 V8内部的内存对象分为新生代和老生代,新生代是代表存在时间较短,很快被释放内存空间的对象,而老生代对象则...

  • V8的垃圾回收机制与内存限制

    V8的垃圾回收机制与内存限制 V8的内存限制 在一般的后端开发语言中,在基本的内存使用上没有什么限制,然而在Nod...

网友评论

      本文标题:V8内存

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