簡體   English   中英

JS垃圾收集器會清除堆棧內存嗎?

[英]Does the JS garbage collector clear stack memory?

在對這個問題發表第一個評論之后: 是什么使該函數運行慢得多?

垃圾收集器會清除堆棧內存嗎? 根據我所讀的內容,通常gc不會這樣做。
緊接着這個問題,我想堆棧和堆內存之間沒有物理上的區別。 有虛擬師嗎? 我的意思是:理論上使用所有堆棧內存而不會引起溢出,之后又將新的內存分配給對象會發生什么?

有人可以詳細說明這是如何工作的嗎? 謝謝。

垃圾收集器會清除堆棧內存嗎?

不會。 垃圾收集器僅管理堆內存。 程序返回該堆棧幀時,預計將再次需要堆棧上的所有值,因此不得收集它們。 從堆棧到堆的引用確實被認為是活動的。

功能退出時, 堆棧存儲器將自動清除。

當然,用動態語言(例如JavaScript)很難決定程序的哪些部分進入堆棧,哪些部分進入堆。 一些優化允許在堆棧上分配對象,而閉包可能要求在堆中分配變量環境。

我想象堆棧和堆內存之間沒有物理差異; 有虛擬師嗎?

確實如此。 “堆棧”只是計算機內存的一個(通常為固定大小)區域,通過某些過程專用於“堆棧”。 確實,您的內存中有許多堆棧,每個線程一個,並且解釋器(例如JS)也創建自己的堆棧。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM