前端基础进阶学习笔记 1. 内存空间

前端基础进阶(一):内存空间详细图解
地址:https://www.jianshu.com/p/996671d4dcc4

一、3种数据结构


  1. 先进后出、后进先出,像乒乓球盒子;
    应用场景:函数调用栈(即执行上下文)

  2. key-value,树状结构,无关顺序,像书架,知道书名可以找到书的位置;
    应用场景:JSON格式的数据
  3. 队列
    先进先出、后进后出,像排队;
    应用场景:事件队列

二、对象变量及数据类型

  1. 变量对象:执行上下文生成后,会创建一个叫变量对象的特殊变量;
  2. 5中基础数据类型:Undefined、Null、Number、Bool、String(不包括ES6的Symbol),按值访问,保存在变量中的是真实的值
  3. 引用数据类型:按引用访问;引用数据类型的值是保存在堆内存中的对象;在操作对象时,实际上是在操作对象的引用而不是实际的对象;该引用为保存在变量对象中的一个地址,该地址与堆内存的实际值相关联


    变量对象与堆内存.png

三、内存空间管理

  1. 自动垃圾收集机制:垃圾收集器会每隔固定的时间段就执行一次释放操作;最常用的是通过标记清除的算法来找到哪些对象是不再继续使用的,因此a = null其实仅仅只是做了一个释放引用的操作,让 a 原本对应的值失去引用,脱离执行环境,这个值会在下一次垃圾收集器执行操作时被找到并释放。而在适当的时候解除引用,是为页面获得更好性能的一个重要方式。
  2. 局部函数运行完后,内部变量容易回收;全局变量什么时候需要自动释放内存空间则很难判断,因此在我们的开发中,需要尽量避免使用全局变量
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,148评论 1 32
  • 1. 内存空间 波比小金刚本文地址 前言 一直以来对JS的理解和认识总是零散杂乱。近期希望整理出一条主线来,把JS...
    波比小金刚阅读 351评论 0 1
  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,376评论 11 349
  • 1.栈与堆 可以粗浅的认为JavaScript的所有数据都保存在堆内存中。但仍然需要基于堆栈数据结构的思路进行处理...
    Stago阅读 183评论 0 0
  • 今年是2018年狗年,就动笔开始画了一副有关于狗的国画作品。 墨稿:先用浓墨画眼睛和鼻子,还有耳朵,然...
    叶筱暖阅读 319评论 1 4