javascript - JS垃圾收集器会清除堆栈内存吗?

标签 javascript garbage-collection

根据对此问题的第一条评论: What makes this function run much slower?

垃圾收集器是否清理堆栈内存?根据我的阅读,GC 通常不会这样做。
遵循这个问题,我认为堆栈内存和堆内存之间没有物理差异;有虚拟部门吗?我的意思是:当理论上所有堆栈内存都被使用而不会导致溢出并且之后将新内存分配给对象时会发生什么?

有人可以详细说明这实际上是如何工作的吗? 谢谢。

最佳答案

Does the garbage collector sweep stack memory?

没有。 garbage collector只管理堆内存。当程序返回到该堆栈帧时,预计将再次需要堆栈上的所有值,因此不得收集它们。从堆栈到堆的引用确实被认为是事件的。

stack memory当函数退出时自动清除。

当然,在像 JavaScript 这样的动态语言中,程序的哪些部分进入堆栈、哪些部分进入堆并不容易决定。一些优化允许在堆栈上分配对象,而闭包可能需要在堆中分配变量环境。

I imagine that there is no physical difference between stack and heap memory; is there a virtual division?

确实如此。 “堆栈”只是计算机内存的一个(通常是固定大小的)区域,专用于某个进程的“堆栈”。事实上,你的内存中有许多堆栈,每个线程一个,并且解释器(例如 JS)也会创建自己的堆栈。

关于javascript - JS垃圾收集器会清除堆栈内存吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31698747/

相关文章:

java - Swing Timer 不被垃圾回收

javascript - 如何在 Angular 8 中创建通用请求服务

javascript - 为特定 div 的 onmouseleave 操作添加延迟 - javascript、html、jquery

javascript - 使用 jQuery Mobile 在 Intel XDK 上显示灰色 Google map

javascript - Node : smart JSON conversion to Excel file

algorithm - 收集循环的引用计数最简单的增强是什么?

javascript - 如何删除增益节点?

javascript - 使用数组时div不会显示

java - Java垃圾收集是否开始工作以防止内存交换?

Java:主从设置中的 GC 调优?