V8引擎内存回收机制

在这里插入图片描述
新生代内存空间
存放一些新产生的变量,里面的变量都比较小,存在时间短
当新生代内存空间要回收了,将一些活着的变量放到to空间里面,from里面的全部销毁,然后to、from对调,依次循环

老生代内存空间

垃圾回收算法
新生代简单的说就是复制 牺牲空间换时间
老生代就是标记删除整理
在这里插入图片描述

黑色的为标记要删除的变量,当删除后剩下的有很多空间,就需要进行整理。把剩下的整理到一起
为什么要整理呢?
比如数组是连续空间变量
arr = [1,2,3,4]
它需要 1000,1001,1002,1003这样四个连续的空位去放它, 就像网吧四连坐
如果不整理,比如1001没有空位,那么这个数组就无法放入老生代空间

新生代如何晋升到老生代
在这里插入图片描述
闭包会不会在内存中消失看使用情况
如果只是闭包那么用完会消失,如果闭包还进行了引用,那么它不会消失
闭包引用的变量会让内存不回收这些变量,只存在IE5时代的问题,

  • 优化内存

  • 尽量不要定义全局变量

  • 全局变量记得销毁

  • 用匿名自执行函数变全局为局部

  • 尽量避免闭包的引用

闭包的引用

function a(){
    let size = 20 *1024 *1024;
    let arr1 = new Array(size);
    return arr1
}
let b = a();
let c = b();
let d = c();
let f = d();
.
.
.

像上面这样的操作,当引用越来越多之后,变量没有回收,v8引擎就会挂掉。所以一定要尽量避免闭包的引用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值