js内存和垃圾回收

内存的生命周期

  1. 分配需要的内存空间

  2. 使用分配的内存

  3. 不需要时释放内存

内存空间的类型

    • 存放变量

      • 基本类型数据(Number,boolean,null,Undefined,String,Symbol)

      • 指向复杂数据类型的引用指针

    • 特性

      • 先进后出

      • 基本类型的变量名与值都存放在栈中,当我门修改值时会覆盖原有值

    • 存放复杂数据类型

    • 特性

      • 无序的树状结构

      • 满足key-value键值对的存储方式,当我们知道key名,就能通过key名找到对应的value值

      • key名及引用地址存储在栈中,所以当我们复制key名时只是复制了引用指针,指向的value还是tong yi feng

  • 池(常量池)

    • 存放常量

  • 队列(任务队列)

    • 特性

      • 先进先出

垃圾回收机制

        函数中的局部变量:在函数执行完后就不再需要就会释放,

        全局变量:垃圾回收器很难判断

  • 引用计数

    • 看一份数据是否还有指向他的引用

  • 标记清除

    • 从根部出发,看是否能达到某个变量,如果达到及还被需要,否则清除

      • 垃圾回收器创建roots,roots通常时代吗中保留使用的全局变量,js中,一般认定window为root,也就是所谓的根部

      • 从根部出发验证所有的roots,所有的子元素也会被递归检查,进行标记

      • 然后未被标记的将会被垃圾回收器释放

可能造成内存泄漏

  • 全局变量

  • 遗忘的定时器

  • 闭包

  • DOM的引用

    

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值