04JavaScript核心:js内存管理机制解析

1. js 内存生命周期

2.栈内存和堆内存

3.垃圾回收机制

1.js 内存生命周期

js没有暴露任何内存操作给开发者,而是自己默默地完成了所有的管理动作。

  1. ”挖坑“:分配内存
  2. ”用坑“:内存的读和写操作
  3. ”还坑“:内存的释放

2.栈内存和堆内存

let a = 0; 
let b = "Hello World" 
let c = null; 
let d = { name: '修言' }; 
let e = ['修言', '小明', 'bear']; 

访问a、b、c三个变量时,由于是基本类型,从栈中直接获取该变量的值。
访问d和e时,由于是引用类型,先从栈中获取变量对应对象的引用(即它在堆内存中的地址),再拿着地址去堆内存空间查询。

3.垃圾回收机制

  • 引用计数法
  • 标记清除法
3-1 标记清除法
  1. 遍历所有可访问的对象。
  2. 回收不可访问的对象。

当变量进入环境时,如在函数中声明 一个变量,就将该变量标记为“进入环境”。从逻辑上讲永远不能释放进入环境的变量所占用的内存,因为只要执行流进入相应的环境,就可能用到它。
而当变量离开环境时,则将变量标记为“离开环境”。

3-1 引用计数法

跟踪记录每个值被引用的次数,当一个值被引用时,次数+1,减持时-1,下次垃圾回收器会回收次数为0的值的内存。(容易出循环引用的bug)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值