标签:JavaScript 调用栈 堆内存
嗨,朋友们,在这篇文章中,我将解释 JavaScript 中的调用堆栈和堆内存。
调用栈和堆内存是很进口的。每个高级开发人员都应该知道这一点。
我们知道 JavaScript 引擎为我们做了很多工作。它读取 JavaScript 代码并执行它。
这个过程中最重要的两件事是什么,
一种是存储信息(变量、对象等)
内存堆是存放和写入信息的地方。
调用堆栈是为了跟踪,我们在代码中的位置。它帮助我们按顺序运行代码。
对于内存分配,有很多科学知识,但我们不需要。我们知道引擎需要为我们存储数据。内存堆是用来存放数据的。
在代码执行时调用堆栈存储函数和变量。调用堆栈的工作方式类似于先进后出模式。
堆栈溢出:
如果我们不断调用嵌套的函数会发生什么?如果我们互相嵌套调用一个函数,调用堆栈会越来越大,直到我们无法再调用为止。
堆栈溢出很容易发生。看看递归的例子。
上面的程序抛出一个错误。在过去,chrome 会崩溃。
垃圾收集:
JavaScript 是 Carbage 收集语言。这意味着 JavaScipt 在调用函数时分配内存,当执行停止时它会自动释放内存。
像 JavaScript 一样的垃圾收集语言,垃圾收集器将内存冻结在内存堆中。它可以防止内存堆。
垃圾收集器会自动找出我们需要和不需要的东西。但这是一个大错误。正因为如此,JavaScript 开发人员有一种我们不关心内存管理的错误印象。
在像 C 这样的低级语言中,我们需要控制垃圾回收。我们需要告诉要删除的部分。这是一个困难的。但正因为如此,C 非常快速且内存效率高。
垃圾收集通过标记清除算法工作。
内存泄漏:
如果我们运行导致内存泄漏的无限循环。
3 最常见的内存泄漏
全局变量声明
事件监听器
SetInterval(除非我们停止它,否则它会一直运行……)
标签:JavaScript,调用栈,堆内存, 来源:
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。