AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當前位置:首頁 > 科技  > 軟件

JavaScript 如何管理內(nèi)存

來源: 責編: 時間:2024-04-11 09:01:56 175觀看
導讀內(nèi)存影響性能。當你的應用程序代碼消耗太多內(nèi)存時,你會得到一個卡頓的應用程序,甚至可能會出現(xiàn)內(nèi)存耗盡的崩潰。當你在web瀏覽器中運行一個應用程序時,大部分應用程序內(nèi)存存儲在Javascript堆中,而這個堆位于計算機的RAM內(nèi)

內(nèi)存影響性能。當你的應用程序代碼消耗太多內(nèi)存時,你會得到一個卡頓的應用程序,甚至可能會出現(xiàn)內(nèi)存耗盡的崩潰。LQW28資訊網(wǎng)——每日最新資訊28at.com

當你在web瀏覽器中運行一個應用程序時,大部分應用程序內(nèi)存存儲在Javascript堆中,而這個堆位于計算機的RAM內(nèi)。在 Vue 或者 React 應用程序的上下文中,存儲在JS堆中的常見對象包括:組件實例、虛擬DOM,以及如果你使用狀態(tài)管理工具(Vuex、Pinia、Redux、mobx)的話,包含 State、Action 等。LQW28資訊網(wǎng)——每日最新資訊28at.com

當你與一個應用程序進行交互時,JS堆可能會隨著時間的推移而增長。你可以通過使用Chrome DevTools進行剖析時觀察到這種增長。LQW28資訊網(wǎng)——每日最新資訊28at.com

LQW28資訊網(wǎng)——每日最新資訊28at.com

我在瀏覽 Medium 首頁幾秒鐘后拍攝了上面的截圖。LQW28資訊網(wǎng)——每日最新資訊28at.com

由于內(nèi)存增長會影響應用程序的性能,因此清除未使用的內(nèi)存以釋放空間非常重要。Javascript引擎回收未使用內(nèi)存的過程稱為垃圾回收(GC)。與某些語言(如C和C++)不同,Javascript引擎會自動進行垃圾回收。LQW28資訊網(wǎng)——每日最新資訊28at.com

讓我們從Chrome開始分析。LQW28資訊網(wǎng)——每日最新資訊28at.com

Javascript 與 Major GC 和 Minor GC

Major GC 和 Minor GC

Major GC( 主垃圾回收器 ):主要負責老生代的垃圾回收;LQW28資訊網(wǎng)——每日最新資訊28at.com

Minor GC( 副垃圾回收器 ):主要負責新生代的垃圾回收;LQW28資訊網(wǎng)——每日最新資訊28at.com

在瀏覽器中能找到他們(Major GC、Minor GC)之間的工作身影:LQW28資訊網(wǎng)——每日最新資訊28at.com

  • JS HEAP SIZE 明顯降低的時候,必是Major GC在工作

LQW28資訊網(wǎng)——每日最新資訊28at.com

  • 反觀 Minor GC,則沒 Major工作這么明顯,但是Minor GC工作會比Major頻繁得多

LQW28資訊網(wǎng)——每日最新資訊28at.com

Javascript使用 Major GC 和 Minor GC 清理JS堆

打開Chrome開發(fā)者工具,并導航到性能(Performance)選項卡,確保選中“內(nèi)存(Memory)”復選框。LQW28資訊網(wǎng)——每日最新資訊28at.com

LQW28資訊網(wǎng)——每日最新資訊28at.com

這是Chrome分析器生成的配置文件:LQW28資訊網(wǎng)——每日最新資訊28at.com

LQW28資訊網(wǎng)——每日最新資訊28at.com

你可以看到堆的大小會增長和縮小。如果你仔細觀察,你會發(fā)現(xiàn)堆大小的下降與垃圾回收活動是對應的。"Major GC" 表示正在進行一次主要的垃圾回收。LQW28資訊網(wǎng)——每日最新資訊28at.com

LQW28資訊網(wǎng)——每日最新資訊28at.com

當JS堆大小大幅下降時,你很可能會在任何網(wǎng)站上看到這種模式。事實上,如果你在單頁應用程序中切換標簽頁時,JS堆的大小沒有顯著減少,但標簽頁的內(nèi)容有所不同,這可能是內(nèi)存泄漏的跡象。LQW28資訊網(wǎng)——每日最新資訊28at.com

在剖析中,你還會看到“Minor GC”幀。LQW28資訊網(wǎng)——每日最新資訊28at.com

這些 Major GC 和 Minor GC 幀向你揭示了一些關于Javascript中垃圾回收的信息。LQW28資訊網(wǎng)——每日最新資訊28at.com

  • 垃圾回收有兩種類型:Major GC 和 Minor GC。
  • Minor GC 通常很短暫,而 Major GC 則需要更長的時間。
  • 在“任務”下看到它們作為幀的事實表明它們都在主應用程序線程上運行。
  • 因為它們在主線程上運行,它們會阻塞Javascript執(zhí)行,因為瀏覽器只有一個主線程來運行你的Javascript代碼。
  • 由于它們阻塞了Javascript執(zhí)行,過多的GC會影響應用程序的性能。

注意:GC 只有在某些時候會阻塞Javascript執(zhí)行。它并不是一直阻塞,而是在顯示為幀時。我們在Chrome分析器中無法看到這一點,但在Firefox分析器中可以看到。LQW28資訊網(wǎng)——每日最新資訊28at.com

現(xiàn)在讓我們來看看Firefox分析器,它也揭示了Major GC和Minor GC之間的差異。LQW28資訊網(wǎng)——每日最新資訊28at.com

Major GC和Minor GC清理JS堆的兩個不同部分

我不是Firefox的用戶,我之所以將Firefox下載到我的筆記本電腦上,僅僅是因為它的剖析功能。Firefox的剖析器是開源的,并且比Chrome的剖析器有更多的可視化功能。LQW28資訊網(wǎng)——每日最新資訊28at.com

錄制一個剖析文件,并導航到“Marker Chart”可視化。Marker Chart本質(zhì)上是所有不同類型活動的時間軸,包括垃圾回收活動。LQW28資訊網(wǎng)——每日最新資訊28at.com

LQW28資訊網(wǎng)——每日最新資訊28at.com

你可能會注意到的第一件事是,Minor GC 發(fā)生頻率相當高,而 Major GC 則不是。這是有很好的原因的,因為如前面所述,Minor GC 很短暫,而 Major GC 則需要更長的時間。LQW28資訊網(wǎng)——每日最新資訊28at.com

如果你將鼠標懸停在一個 Minor GC 切片上,你會得到以下描述:LQW28資訊網(wǎng)——每日最新資訊28at.com

LQW28資訊網(wǎng)——每日最新資訊28at.com

因此,除了它們以不同的頻率運行外,Major GC 和 Minor GC 還清理JS堆的不同部分。LQW28資訊網(wǎng)——每日最新資訊28at.com

如上所述,Minor GC 清除了所謂的“苗圃集合(nursery collection)”。 如果對象在 Minor GC 中幸存下來,它們就會從 Nursery 移動到“終身(tenured)”堆或“長期(long-lived)”堆上。 因此,Major GC 必定是清除永久堆的對象。LQW28資訊網(wǎng)——每日最新資訊28at.com

Major GC通過一種名為mark—and—sweep的算法來清理永久化的堆,我們稍后將介紹該算法。LQW28資訊網(wǎng)——每日最新資訊28at.com

LQW28資訊網(wǎng)——每日最新資訊28at.com

現(xiàn)在我們知道 JS 堆至少有 2 個組件:LQW28資訊網(wǎng)——每日最新資訊28at.com

  • 一個用于最近分配的對象的苗圃集合(nursery collection)
  • 一個用于長期存在的對象的永久堆。(“終身(tenured)”堆或“長期(long-lived)”堆)

主要GC算法(增量標記和清除)

Marker Chart 最后一行的屏幕截圖中還有一個 GCSlide。 嗯,那是什么?LQW28資訊網(wǎng)——每日最新資訊28at.com

如果將鼠標懸停在 Major GC 矩形上,你會看到 Major GC 的描述:LQW28資訊網(wǎng)——每日最新資訊28at.com

LQW28資訊網(wǎng)——每日最新資訊28at.com

整個Major GC花費了580毫秒。然而,正如描述所說,主線程僅在個別切片上被阻塞。因此,最后一行的GCSlide指的是這些阻塞切片。再往下看,你會發(fā)現(xiàn)總切片時間是34.4毫秒,因此在Javascript主線程無法執(zhí)行應用程序代碼時,只有34.4毫秒的工作。LQW28資訊網(wǎng)——每日最新資訊28at.com

如果你將鼠標懸停在其中一個GC切片上,你會得到:LQW28資訊網(wǎng)——每日最新資訊28at.com

LQW28資訊網(wǎng)——每日最新資訊28at.com

請注意,兩個工具提示都有“標記階段”和“清除階段”。這意味著Javascript垃圾回收有兩個階段:標記和清除。這個算法稱為標記-清除。請注意,GC切片的描述中提到了“增量垃圾回收的一個切片”。增量GC是實現(xiàn)標記-清除算法的一種方式。LQW28資訊網(wǎng)——每日最新資訊28at.com

標記階段通過遍歷對象圖來“標記”所有從根集合(例如全局變量、活動函數(shù)調(diào)用)可達的對象。然后,清除階段“掃描”整個堆,收集并釋放所有未標記的對象的內(nèi)存,這些對象被視為不可達,因此是垃圾。LQW28資訊網(wǎng)——每日最新資訊28at.com

LQW28資訊網(wǎng)——每日最新資訊28at.com

增量意味著你在標記階段以增量方式進行操作,從而最小化主線程被阻塞的時間。LQW28資訊網(wǎng)——每日最新資訊28at.com

Chrome vs. Firefox

當涉及到Javascript中的垃圾回收時,我想提出一些細微差別。LQW28資訊網(wǎng)——每日最新資訊28at.com

Chrome(以及NodeJS)使用V8 Javascript引擎。LQW28資訊網(wǎng)——每日最新資訊28at.com

另一方面,F(xiàn)irefox使用一個名為SpiderMonkey的不同引擎。正是Javascript引擎帶來了垃圾回收。V8使用術語“young generation”代替“nursery”,以及“old generation”代替“tenured heap”。然而,V8和SpiderMonkey都使用Minor GC來清理年輕對象和Major GC來清理老對象。LQW28資訊網(wǎng)——每日最新資訊28at.com

兩者都實現(xiàn)了增量標記-清除算法用于Major GC。不過,具體的 增量標記-清除算法 在V8和SpiderMonkey之間有所不同。LQW28資訊網(wǎng)——每日最新資訊28at.com

總結(jié)一下:LQW28資訊網(wǎng)——每日最新資訊28at.com

LQW28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-82742-0.htmlJavaScript 如何管理內(nèi)存

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 17個強大的 AI 工具,讓你的工作效率翻倍

下一篇: C++中的內(nèi)存對齊與數(shù)據(jù)大小探測:解析sizeof與strlen

標簽:
  • 熱門焦點
  • Redmi Pad評測:紅米充滿野心的一次嘗試

    從Note系列到K系列,從藍牙耳機到筆記本電腦,紅米不知不覺之間也已經(jīng)形成了自己頗有競爭力的產(chǎn)品體系,在中端和次旗艦市場上甚至要比小米新機的表現(xiàn)來得更好,正所謂“大丈夫生居
  • 小米平板5 Pro 12.4簡評:多專多能 兼顧影音娛樂的大屏利器

    疫情帶來了網(wǎng)課,網(wǎng)課盤活了安卓平板,安卓平板市場雖然中途停滯了幾年,但好的一點就是停滯的這幾年行業(yè)又有了新的發(fā)展方向,例如超窄邊框、高刷新率、多攝鏡頭組合等,這就讓安卓
  • 跑分安卓第一!Redmi K60至尊版8月發(fā)布!盧偉冰:目標年度性能之王

    8月5日消息,Redmi K60至尊版將于8月發(fā)布,在此前舉行的戰(zhàn)略發(fā)布會上,官方該機將搭載搭載天璣9200+處理器,安兔兔V10跑分超177萬分,是目前安卓陣營最高的分數(shù)
  • 讓我們一起聊聊文件的操作

    文件【1】文件是什么?文件是保存數(shù)據(jù)的地方,是數(shù)據(jù)源的一種,比如大家經(jīng)常使用的word文檔、txt文件、excel文件、jpg文件...都是文件。文件最主要的作用就是保存數(shù)據(jù),它既可以保
  • 零售大模型“干中學”,攀爬數(shù)字化珠峰

    文/侯煜編輯/cc來源/華爾街科技眼對于絕大多數(shù)登山愛好者而言,攀爬珠穆朗瑪峰可謂終極目標。攀登珠峰的商業(yè)路線有兩條,一是尼泊爾境內(nèi)的南坡路線,一是中國境內(nèi)的北坡路線。相
  • 阿里大調(diào)整

    來源:產(chǎn)品劉有媒體報道稱,近期淘寶天貓集團啟動了近年來最大的人力制度改革,涉及員工績效、層級體系等多個核心事項,目前已形成一個初步的“征求意見版”:1、取消P序列
  • 認真聊聊東方甄選:如何告別低垂的果實

    來源:山核桃作者:財經(jīng)無忌爆火一年后,俞敏洪和他的東方甄選依舊是頗受外界關心的“網(wǎng)紅”。7月5日至9日,為期5天的東方甄選“甘肅行”首次在自有App內(nèi)直播,
  • 2納米決戰(zhàn)2025

    集微網(wǎng)報道 從三強爭霸到四雄逐鹿,2nm的廝殺聲已然隱約傳來。無論是老牌勁旅臺積電、三星,還是誓言重回先進制程領先地位的英特爾,甚至初成立不久的新
  • iQOO Neo8系列新品發(fā)布會

    旗艦雙芯 更強更Pro
Top