【JavaScript】JS的调用栈和堆

黎浩然
2023-12-01

在JS代码的执行过程中会分配两个内存区域——调用栈和堆。

第一个性能非常高,因此用于连续执行所提供的函数。每个函数调用在调用栈中创建一个所谓的“框架”,其中包含其局部变量的副本和this。

你可以通过Chrome调试器查看它,就像在其他与堆栈类似的数据结构中一样,调用栈的栈被推送或弹出堆栈,具体取决于正在执行或终止的新函数。

你可能见过调用栈上限溢出错误,通常是由于某种形式的无限循环导致的。

谈到堆,就像现实生活中一样,JS堆是存储本地范围之外对象的地方。它比调用栈慢得多。

这就是为什么访问本地变量时速度可能会快很多。堆也是存放未被访问或使用的对象的地方,这种对象就是垃圾。

有垃圾就要有垃圾回收器,需要时,JS运行时的垃圾回收器就会激活,清理堆并释放内存。

 类似资料: