91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么理解JS中的垃圾回收

發布時間:2021-11-12 11:30:50 來源:億速云 閱讀:136 作者:iii 欄目:開發技術

這篇文章主要講解了“怎么理解JS中的垃圾回收”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“怎么理解JS中的垃圾回收”吧!

  JS中的垃圾回收機制必要性,由于字符串、對象和數組沒有固定大小,所有當他們的大小以知時,才能對他們進行動態的存儲分配。JavaScript程度每次創建字符串、數組或對象時,解釋器都必須分配內存來存儲那個實體。只要像這樣動態地分配了內存,最終都要釋放這些內存以便他們能夠被再用,否則,javascript的解釋器將會消耗完系統中所有可用的內存,造成系統崩潰。

  為什么需要系統JS中的垃圾回收

  JS不像C/C++,他有自己的一套垃圾回收機制。javascript的解析器可以檢測到何時程序不再使用一個對象了,當他確定了一個對象是無用的時候,他就知道不再需要這個對象,可以把它所占用的內存釋放掉了。

  例如:

  vara="helloworld";

  varb="world";

  vara=b;

  //這時,會釋放掉“helloworld”,釋放內存以便再引用

  垃圾回收的方法

  標記清除

  js中最常用的垃圾收集方式是標記清楚。當變量進入環境(例如,在函數中聲明一個變量)時,就將這個變量標記為“進入環境”。從邏輯上講,永遠不能釋放進入環境的變量所占用的內存,因為只要執行流進入相應的環境,就可能會用到他們。而當變量離開環境時,則將其標記為“離開環境”。

  可以使用任何方式來標記變量。比如,可以通過翻轉某個特殊的位來記錄一個變量何時進入環境,或者使用一個“進入環境的”變量列表及一個“離開環境的”變量列表來跟蹤哪個變量發生變化。

  垃圾收集器在運行的時候會給存儲在內存中的所有變量都加上標記(當然,可以使用任何標記方式)。然后,它會去掉環境中的變量以及被環境中的變量引用的變量標記。而在此之后再被加上標記的變量將被視為準備刪除的變量,原因是環境中的變量已經無法訪問到這些變量了。最后,垃圾收集器完成內存除工作,銷毀那些帶標記的值并回收他們所占用的內存空間。

  引用計數(不常見)

  引用計數的含義是跟蹤記錄每個值被引用的次數。當聲明了一個變量并將一個引用類型值賦給該變量時,則這個值的引用次數就是1。如果同一個值又被賦給另一個變量,則該值的引用次數加1.相反,如果包含對這個值引用的變量又取的了另一個值,則這個值的引用次數減1.當這個值的引用次數變成0時,則說明沒有辦法再訪問這個值了,因而就可以將其占用的內存空間收回來。這樣,當垃圾收集器下次再運行時,它就會釋放那些引用次數為零的值所占用的內存。

感謝各位的閱讀,以上就是“怎么理解JS中的垃圾回收”的內容了,經過本文的學習后,相信大家對怎么理解JS中的垃圾回收這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

js
AI

宜昌市| 新竹县| 宣武区| 靖西县| 澜沧| 玛曲县| 聂拉木县| 庆云县| 丰台区| 韶山市| 开化县| 龙门县| 阿鲁科尔沁旗| 奉节县| 肇州县| 马尔康县| 收藏| 乳源| 公主岭市| 徐汇区| 文昌市| 万源市| 葵青区| 日土县| 彭州市| 高唐县| 永和县| 金平| 保康县| 新营市| 仁怀市| 太湖县| 台湾省| 涪陵区| 新和县| 丹江口市| 台北县| 蒙山县| 横山县| 肃北| 龙井市|