堆栈空间
javaScript 中的内存空间主要分为三种类型:
代码空间:主要⽤来存放可执⾏代码
代码空间主要⽤来存放可执⾏代码。栈空间及堆空间主要⽤来存放数据
栈空间 (基础类型,执行上下文)
基本类型在内存中占有固定⼤⼩的空间,所以它们 的值保存在栈空间
⼀般栈空间不会很⼤。
JavaScript 引擎通过向下移动 ESP 指针来销毁存放在栈空间中的执⾏上下⽂
堆空间(引用类型使用包括了堆和栈空间)
引⽤类型,值⼤⼩不固定,但指向值的指针⼤⼩(内存地址)是固定的,
所以把对象放⼊堆中,将对象的地址放⼊栈中,这样,在调⽤栈中切换上下⽂时,只需要将指针下移到上个执⾏上下⽂的地址就可以了,同时保证了栈空间不会很⼤。
当查询引⽤类型的变量时, 先从栈中读取内存地址, 然后再通过地址找到堆中的值。对于这种,我 们把它叫做 按引⽤访问。
⼀般堆内存空间很⼤,能存放很多数据,但它内存分配与回收都需要花费⼀定的时间