用JS内存空间理解基本类型和引用类型的区别

JavaScript的内存管理机制。

程序的运行需要内存。对于持续运行的服务进程,必须及时释放不再用到的内存。否则,内存占用越来越高,轻则影响系统性能,重则导致进程崩溃。
JavaScript会在创建变量时自动分配内存,并在这些变量不被使用时自动释放内存,这个过程被称为垃圾回收

内存回收

var a=1;
a++;
a=null

JavaScript有自动垃圾收集机制,就是找出那些不再继续使用的值,然后释放其占用的内存。垃圾收集器会每隔固定的时间段就执行一次释放操作。 在JavaScript中,最常用的是通过标记清除的算法来找到哪些对象是不再继续使用的,因此 a = null 其实仅仅只是做了一个释放引用的操作,让 a 原本对应的值失去引用,脱离执行环境,这个值会在下一次垃圾收集器执行操作时被找到并释放。

JS内存空间

JS内存空间分为栈(stack)、堆(heap)。

JavaScript中的变量分为基本类型和引用类型。基本类型就是保存在栈内存中的简单数据段,而引用类型指的是那些保存在堆内存中的对象。
基本类型:简单的数据段,存放在栈内存中,占据固定大小的空间。基本类型有Undefined、Null、Boolean、Number 和String。这些类型在内存中分别占有固定大小的空间,他们的值保存在栈空间,我们通过按值来访问的。
引用类型(对象):值大小不固定,存放在堆内存中,栈内存中存放地址指向堆内存中的对象。
存放在堆内存中的对象,变量实际保存的是一个指针,这个指针指向另一个位置。每个空间大小不一样,要根据情况开进行特定的分配。

当我们需要访问引用类型(如对象,数组,函数等)的值时,首先从栈中获得该对象的地址指针,然后再从堆内存中取得所需的数据。



猜你喜欢

转载自blog.csdn.net/dreamingbaobei3/article/details/88724179