前端基础进阶(一):内存空间详细图解

https://segmentfault.com/a/1190000012646488  https://yangbo5207.github.io/wutongluo/

说明:此处只是记录阅读前端基础进阶的理解和总结,如有需要请阅读上面的链接

一、三种数据结构

1.栈:栈是一种先进后出,后进先出的数据结构,类似于装兵乓球的盒子,最先使用的肯定是最顶端的兵乓球也是最后放进去的,要想使用最顶部的兵乓球就必须要把上面的兵乓球都拿出来

2.堆:堆是一种树状结构,具有无序性,只要知道节点的名称就可以访问该节点的值,类似json数据结构

3.队列:队列是一种先进先出的数据结构,类似排队过安检,最前面的一定是先过安检的

二、基础数据类型与引用类型

1.javascript有五种基本数据类型:Undefined、 Null、Boolean 、Number、String

2.引用类型:数组Array,对象Object属于引用类型

3.引用类型与基本类型的区别:基本类型的变量中存放的是基本类型的值,引用类型的变量存放的是值的引用,也就是指向值的地址指针,而值本身存放在堆内存中(正常情况下js的数据都是存放在堆内存中,基本数据类型也是存放在堆内存中)

4.引用类型的特性:由于基本类型和引用类型存在以上的区别,致使当把一个引用类型a复制给另一个引用类型b,而b指向的值改变后,a对应的值也跟着改变了,如下例子

var m = { a: 10, b: 20 }
var n = m;
n.a = 15;//此时m.a=15

三、内存管理

1.JavaScript的内存生命周期

1)分配需要的内存

2)使用分配的内存(读、写)

3)释放不再需要的内存

var a = 20;  // 在内存中给数值变量分配空间
alert(a + 100);  // 使用内存
a = null; // 使用完毕之后,释放内存空间

JavaScript有自动内存回收机制,会定期将不需要的内存回收释放。通过使用标记清除的算法可以标记某个元素的内存需要释放,比如a=null就可以标记a所占的内存不再使用需要释放,内存管理器会在下次运行时将内存空间回收

原文地址:https://www.cnblogs.com/lidaying5/p/8417422.html