1.什么是垃圾回收机制?它是怎么工作的?

那就要知道什么是垃圾,垃圾就是没有被引用的对象,或者是几个对象相互引用形成一个闭环,但是从根上访问不到也是垃圾.他们就会被清除.
标记-清除
1.垃圾回收器获取根并标记他们
2.然后垃圾回收器访问并标记所有来自根的引用
3.然后垃圾回收器访问被标记的对象,并标记他们的引用,防止二遍访问
4.重复上面的步骤直到出现未被标记的引用出现
5.最后删除所有未被标记的对象

2.什么是根?

根就是一组基本的可达值,他们不会被删除1.全局变量2.本地函数的参数和变量3.当前在调用链上的其他函数的参数和变量

3.什么是可达值

可达值是js内存管理里最主要的概念,他就是指以某种方式可访问或可调用的一些值,它会被保存在内存中

4.什么是闭包

闭包就是函数套函数
在闭包里面,内部的函数可以访问到外部函数作用域内的变量,但是外部的函数不能访问内部函数作用域内的变量

function a() {var num = 0;function b() {console.log(++num);};return b;
};
var c = a();
c() // 1
c() //2

以前不明白为什么它会每次递加,因为a函数被存进了变量c 他是全局变量,不会被垃圾回收机制回收,
下次再调用C()的时候c的值在内存中保存,所以每次都是在原有的基础上加一

function two() {var a = 1;return function() {a++;console.log(a);};
};two() //2
two() //2

因为这个函数执行完 就销毁了,下次在调用的时候又是一次新的调用跟一起没有关系,所以无论调多少次都是2

5.为什么闭包不会被回收

因为他本身就是建立在一个函数的内部作用域的子函数,由于可访问上级作用域的原因,即使上级函数执行完,作用域也不会被清除,这时子函数,就是闭包,就拥有了访问上级作用域中变量的权限,即使上级函数执行完,作用域内的值也不会被销毁

自己的一些笔记,不对之处请指出,不喜勿喷

闭包为什么不会被垃圾回收机制回收相关推荐

  1. 复习Javascript专题(二):闭包,内存,以及垃圾回收机制

    1.什么是闭包?闭包有啥特性以及存在什么问题? 概念:闭包是指有权访问另一个函数作用域中的变量的函数.下面的outer就形成了一个闭包: function outer(){const name='na ...

  2. js垃圾回收机制,内存泄露和内存溢出,解决闭包产生的内存泄露详解

    一.内存的周期和回收机制 分配内存----->使用内存----->释放内存 1.JS 环境中分配的内存有如下声明周期: 内存分配:当我们声明变量.函数.对象的时候,系统会自动为他们分配内存 ...

  3. 前端面试常考题:JS垃圾回收机制

    摘要:众所周知,应用程序在运行过程中需要占用一定的内存空间,且在运行过后就必须将不再用到的内存释放掉,否则就会出现下图中内存的占用持续升高的情况,一方面会影响程序的运行速度,另一方面严重的话则会导致整 ...

  4. 理解闭包 js回收机制

    为什么要有回收机制?why? 打个比方,我有一个内存卡,这个内存是8G的,我把文件,视频,音乐,都保存到了这个内存卡,随着我的储存的内容越来越多,这个内存卡已经保存不了了,如果我还想再把其他的文件保存 ...

  5. JavaScript进阶(十五):JS 垃圾回收机制

    文章目录 一.前言 二.JavaScript 中的内存管理 三.全停顿(Stop The World ) 3.1 JavaScript 中的垃圾回收 3.1.1 引用计数 3.1.2 标记清除(Mar ...

  6. java 强制垃圾回收_Java垃圾回收机制

    Java垃圾回收机制 垃圾回收机制用到finalize.当程序创建对象.数组等引用类型实体时,系统都会在堆内存中为之分配一块内存区,对象就保存在这块内存中,当这块内存不再被任何引用变量引用时,这块内存 ...

  7. JAVA垃圾回收机制-史上最容易理解看这一篇就够了

    目录 1. JDK构成 2. JAVA执行过程 2.1 第一步:编译阶段 2.2 第二步:运行阶段 3. JAVA内存管理 3.1 JAVA的内存模型 3.2 JVM1.7和1.8区别 3.3 JAV ...

  8. python的垃圾处理机制_Python语法入门之垃圾回收机制

    一 引入 解释器在执行到定义变量的语法时,会申请内存空间来存放变量的值,而内存的容量是有限的,这就涉及到变量值所占用内存空间的回收问题,当一个变量值没有用了(简称垃圾)就应该将其占用的内存给回收掉,那 ...

  9. Java GC垃圾回收机制

    Java提供了gc机制,jvm 中,程序计数器.虚拟机栈.本地方法栈都是随线程而生随线程而灭,栈帧随着方法的进入和退出做入栈和出栈操作,实现了自动的内存清理,因此,我们的内存垃圾回收主要集中于 jav ...

最新文章

  1. java camel dsl,Apache Camel与Spring DSL
  2. how is CRM One Order date range finally converted to OPEN SQL
  3. [摘抄]MySQL数据库系统的常规管理介绍
  4. 浅谈Windows下SVN在Android Studio中的配置、基本使用及解除关联
  5. python中bool函数的用法_python3实战python函数每日一讲 - bool([x])
  6. virtualenv创建独立的Python环境
  7. 【OCR技术】字符识别技术总览
  8. SpringBoot高级篇JdbcTemplate之数据查询上篇
  9. python case when用法_oracle菜鸟学习之 select case when的使用
  10. SimpleSniffer—ReadMe
  11. win7快捷方式去箭头_【初级会计】作为会计的你必须知道的快捷方式
  12. python[爬虫]爬取百万条新浪新闻 新浪滚动新闻中心(多进程)
  13. 阿里云盘登录空白问题解决
  14. 前端和后端到底有什么区别?待遇和前景如何?
  15. ASEMI大功率LED驱动器整流桥KBP210
  16. Vray室内日间渲染蓝海创意云
  17. 聚类算法模型评价指标
  18. 碧云九歌属于哪款服务器,碧云九歌官网版
  19. 金蝶ERP二次开发笔记(二)----ID相关处理
  20. python 圆周率,用python计算圆周率π

热门文章

  1. FlinkSQL平台化之路-StreamX提交源码剖析
  2. linux下安装jdk和安装后版本不一致的情况
  3. jQuery 自动完成
  4. Bootloader Project
  5. 基于光量子电路,潘建伟团队再获重要突破!
  6. mysql分页缓冲池占用很高怎么解决_缓冲池(buffer pool),这次彻底懂了!!!
  7. 天玑900和麒麟810性能哪个好?
  8. asp.net 代码设置兼容性视图
  9. kali linux查看wifi密码-超详细过程
  10. openwrt无线速率的修改