【问题标题】:In JavaScript loops, how are block-level allocations managed in memory?在 JavaScript 循环中,如何在内存中管理块级分配?
【发布时间】:2017-10-16 20:45:47
【问题描述】:

我很好奇 JavaScript 解释器管理块级变量的方式,例如 letconst

假设我有一个循环:

for (let i = 0; i < 100; i++) {
  const square = i * i;
}

isquare 究竟分配在哪里?

我知道有一个帧堆栈;每个函数调用都会添加一个新的类字典对象,表示函数的词法上下文。当一个函数退出时,我们递减一个堆栈指针。这意味着我们可以运行带有变量的函数,而不会在堆上产生垃圾。

但是我们的块变量在哪里呢?我们是否用另一个项目来增加帧堆栈?它们是否“扁平化”到上下文中,但带有特殊标志或符号以将它们与兄弟块中的变量区分开来?

最后,我一般可以在哪里学习 JavaScript 解释器(如 V8)如何管理内存?

【问题讨论】:

标签: javascript memory v8


【解决方案1】:

这里有一些很棒的堆栈溢出答案,可能会对您有所帮助。
Memory allocation for JavaScript types
How variables are allocated memory in Javascript?
JavaScript variables declare outside or inside loop?
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Memory_Management
当然还有documentation of V8.
我希望阅读这些内容可以帮助您更多地了解 javascript 内存管理。

【讨论】:

    猜你喜欢
    • 2017-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-01
    • 2013-06-07
    • 1970-01-01
    • 2021-11-20
    相关资源
    最近更新 更多