Skip to main content

堆栈空间

javaScript 中的内存空间主要分为三种类型:

代码空间:主要⽤来存放可执⾏代码

代码空间主要⽤来存放可执⾏代码。栈空间及堆空间主要⽤来存放数据

栈空间 (基础类型,执行上下文)

基本类型在内存中占有固定⼤⼩的空间,所以它们的值保存在栈空间

⼀般栈空间不会很⼤。

JavaScript 引擎通过向下移动 ESP 指针来销毁存放在栈空间中的执⾏上下⽂

堆空间(引用类型使用包括了堆和栈空间)

引⽤类型,值⼤⼩不固定,但指向值的指针⼤⼩(内存地址)是固定的,

所以把对象放⼊堆中,将对象的地址放⼊栈中,这样,在调⽤栈中切换上下⽂时,只需要将指针下移到上个执⾏上下⽂的地址就可以了,同时保证了栈空间不会很⼤。

当查询引⽤类型的变量时, 先从栈中读取内存地址, 然后再通过地址找到堆中的值。对于这种,我 们把它叫做 按引⽤访问。

⼀般堆内存空间很⼤,能存放很多数据,但它内存分配与回收都需要花费⼀定的时间