首頁 web前端 js教程 淺析JS垃圾收集機制與記憶體管理

淺析JS垃圾收集機制與記憶體管理

Apr 04, 2018 pm 02:36 PM
javascript

這篇文章主要介紹了淺析JS垃圾收集機制和記憶體管理,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟著小編過來看看吧

  垃圾收集

  javascript中的垃圾收集機制很簡單:找出那些不在使用的變數,然後釋放他們.

#    局部變數只存在在函數執行過程中,所以,當函數執行結束之後,局部變數就沒有存在的必要了.但是並不是所有的變數都是那樣容易判斷的,所以要用一些方法來回收這些變數

    1 標記清除:

    javascript中最常用的垃圾收集方式是清除標記.當變數進入環境時,將這個變數標記為"進入環境" ,當變數離開環境時,將變數標記為"離開環境",一般來說,咱們只會清除帶有離開環境標記的變數,因為已經沒辦法存取他們了.然後垃圾收集器來完成記憶體清除工作.

    2 引用計數:

    這個方法不是那麼常用.引用計數的意思就是記錄每個值被引用的次數,當被引用的次數減為0的時候,則說明再也沒有辦法存取那個值了,所以可以將它佔用的記憶體釋放.

    但是引用計數有一個問題:循環引用.舉個例子:

##    


function problem(){
var objectA = new Object();
var objectB = new Object();
objectA.someOtherObject = objectB;
objectB.anotherObject = objectA;
}
登入後複製

    在這個例子中,在這個例子中,objectA 和objectB 透過各自的屬性互相引用;也就是說,這兩個物件的引用次


#數都是2。在採用標記清除策略的實作中,由於函數執行之後,這兩個物件都離開了作用域,因此這種相互引用不是個問題。但在採用引用計數策略的實作中,當函數執行完畢後,objectA 和objectB 也會繼續存在,因為它們的引用次數永遠不會是0。假如這個函數被重複多次調用,就會導致大量內存得不到回收

    為了避免這樣的問題,咱們要在不使用他們的時候將他們置為null,以消除循環引用


記憶體管理:

   我們都知道分配給網頁瀏覽器的可用記憶體數量通常比分配給桌面應用程式的少。這樣做的目的主要是出於安全性方面的考慮,目的是防止執行JavaScript 的網頁耗盡全部系統記憶體而導致系統崩潰。記憶體限制問題不僅會影響給變數分配內存,同時還會影響呼叫堆疊以及在一個執行緒中能夠同時執行的語句數量。


    因此,確保佔用最少的記憶體可以讓頁面獲得更好的效能。而優化記憶體佔用的最佳方式,就是為執行 中的程式碼只保存必要的資料。一旦資料不再有用,最好透過將其值設為null 來釋放其引用——這個 做法叫做解除引用(dereferencing)。這做法適用於大多數全域變數和全域物件的屬性。局部變數會在 它們離開執行環境時自動被解除引用,如下面這個範例所示:


function createPerson(name){
var localPerson = new Object();
localPerson.name = name;
return localPerson;
}
var globalPerson = createPerson("Nicholas");
// 手工解除globalPerson 的引用
globalPerson = null;
登入後複製

    解除數值的參考並不表示自動回收該值所佔用的記憶體。解除引用的真正作用是讓值脫離執行環境,以便垃圾收集器下次運行時將其回收。


相關推薦:

java垃圾回收機制、記憶體管理

JS的垃圾回收機制與記憶體分配

#JavaScript垃圾收集機制及記憶體洩漏問題#

以上是淺析JS垃圾收集機制與記憶體管理的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1665
14
CakePHP 教程
1424
52
Laravel 教程
1322
25
PHP教程
1269
29
C# 教程
1249
24
大內存優化,電腦升級16g/32g內存速度沒什麼變化怎麼辦? 大內存優化,電腦升級16g/32g內存速度沒什麼變化怎麼辦? Jun 18, 2024 pm 06:51 PM

對於機械硬碟、或SATA固態硬碟,軟體運轉速度的提升會有感覺,如果是NVME硬碟,可能感覺不到。一,註冊表導入桌面新建一個文字文檔,複製貼上如下內容,另存為1.reg,然後右鍵合併,並重新啟動電腦。 WindowsRegistryEditorVersion5.00[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\MemoryManagement]"DisablePagingExecutive"=d

小米14Pro如何查看記憶體佔用? 小米14Pro如何查看記憶體佔用? Mar 18, 2024 pm 02:19 PM

最近,小米發布了一款功能強大的高階智慧型手機小米14Pro,它不僅外觀設計時尚,而且擁有內在和外在的黑科技。這款手機擁有頂級的性能和出色的多工處理能力,讓用戶能夠享受快速且流暢的手機使用體驗。但效能也是會收到記憶體的影響的,很多用戶想要知道小米14Pro如何查看記憶體佔用,趕快來看看吧。小米14Pro如何查看記憶體佔用?小米14Pro查看記憶體佔用方法介紹開啟小米14Pro手機【設定】中的【應用程式管理】按鈕。查看已安裝的所有應用程式列表,瀏覽列表並找到你想查看的應用,點擊它進入應用程式詳細頁面。在應用程式詳細頁面中

電腦8g和16g記憶體差別大嗎? (電腦記憶體選8g還是16g) 電腦8g和16g記憶體差別大嗎? (電腦記憶體選8g還是16g) Mar 13, 2024 pm 06:10 PM

  新手用戶在購買電腦時,會好奇電腦記憶體8g和16g有什麼差別?應該選擇8g還是16g呢?針對這個問題,今天小編就來跟大家詳細說明一下。  電腦記憶體8g和16g的差別大嗎?  1、在一般家庭或是普通工作使用,8G運行記憶體可以滿足,因此在使用過程中8g和16g區別不大。  2、遊戲愛好者使用時候,目前大型遊戲基本上是6g起步,8g是最低標準。目前在螢幕是2k的情況下,更高解析度並不會帶來更高的幀數表現,因此對8g和16g也無較大差異。  3、對於音訊、視訊剪輯使用者來說,8g和16g會出現明顯區

消息稱三星電子、SK 海力士堆疊式行動記憶體 2026 年後商業化 消息稱三星電子、SK 海力士堆疊式行動記憶體 2026 年後商業化 Sep 03, 2024 pm 02:15 PM

本站9月3日消息,韓媒etnews當地時間昨報道稱,三星電子和SK海力士的「類HBM式」堆疊結構行動記憶體產品將在2026年後實現商業化。消息人士表示這兩大韓國記憶體巨頭將堆疊式行動記憶體視為未來重要收入來源,並計劃將「類HBM記憶體」擴展到智慧型手機、平板電腦和筆記型電腦中,為端側AI提供動力。綜合本站先前報導,三星電子的此類產品叫做LPWideI/O內存,SK海力士則將這方面技術稱為VFO。兩家企業使用了大致相同的技術路線,即將扇出封裝和垂直通道結合在一起。三星電子的LPWideI/O內存位寬達512

三星宣布完成 16 層混合鍵結堆疊製程技術驗證,預計在 HBM4 記憶體大面積應用 三星宣布完成 16 層混合鍵結堆疊製程技術驗證,預計在 HBM4 記憶體大面積應用 Apr 07, 2024 pm 09:19 PM

報告稱,三星電子的高層DaeWooKim表示,在2024年韓國微電子和封裝學會年會上,三星電子將完成採用16層混合鍵結HBM記憶體技術的驗證。據悉,這項技術已通過技術驗證。報告也稱,此次技術驗證將為未來若干年內的記憶體市場發展奠定基礎。 DaeWooKim表示,三星電子成功製造了基於混合鍵合技術的16層堆疊HBM3內存,該內存樣品工作正常,未來16層堆疊混合鍵合技術將用於HBM4內存量產。 ▲圖源TheElec,下同相較現有鍵合工藝,混合鍵結無需在DRAM記憶體層間添加凸塊,而是將上下兩層直接銅對銅連接,

已安裝的記憶體未顯示在Windows 11上 已安裝的記憶體未顯示在Windows 11上 Mar 10, 2024 am 09:31 AM

如果您已經安裝了新的RAM,但它沒有顯示在您的Windows電腦上,本文將幫助您解決此問題。通常,我們會透過升級RAM來提高系統的效能。然而,系統效能也取決於其他硬件,如CPU、SSD等。升級RAM也可以提升您的遊戲體驗。有些使用者註意到安裝的內存在Windows11/10中沒有顯示。如果您遇到這種情況,您可以使用此處提供的建議。已安裝的記憶體未顯示在Windows11上如果您的Windows11/10PC上沒有顯示已安裝的RAM,以下建議將對您有所幫助。安裝的記憶體是否與您的電腦主機板相容?在BIO

美光:HBM 記憶體消耗 3 倍晶圓量,明年產能基本預定完畢 美光:HBM 記憶體消耗 3 倍晶圓量,明年產能基本預定完畢 Mar 22, 2024 pm 08:16 PM

本站3月21日消息,美光在發布季度財報後舉行了電話會議。在該會議上美光CEO桑傑・梅赫羅特拉(SanjayMehrotra)表示,相對於傳統內存,HBM對晶圓量的消耗明顯更高。美光錶示,在同一節點生產同等容量的情況下,目前最先進的HBM3E內存對晶圓量的消耗是標準DDR5的三倍,並且預計隨著性能的提升和封裝複雜度的加劇,在未來的HBM4上這一比值將進一步提升。參考本站以往報道,這一高比值有相當一部分原因在HBM的低良率上。 HBM記憶體採用多層DRAM記憶體TSV連線堆疊而成,一層出現問題就意味著整個

雷克沙推出 Ares 戰神之翼 DDR5 7600 16GB x2 內存套條:海力士 A-die 顆粒,1299 元 雷克沙推出 Ares 戰神之翼 DDR5 7600 16GB x2 內存套條:海力士 A-die 顆粒,1299 元 May 07, 2024 am 08:13 AM

本站5月6日消息,雷克沙Lexar推出Ares戰神之翼系列DDR57600CL36超頻內存,16GBx2套條5月7日0點開啟50元定金預售,至手價1299元。雷克沙戰神之翼記憶體採用海力士A-die記憶體顆粒,支援英特爾XMP3.0,提供以下兩個超頻預設:7600MT/s:CL36-46-46-961.4V8000MT/s:CL38-48-49 -1001.45V散熱方面,此內存套裝搭載1.8mm厚度的全鋁散熱馬甲,配備PMIC專屬導熱矽脂墊。記憶體採用8顆高亮LED燈珠,支援13種RGB燈光模式,可

See all articles