日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁(yè) > 科技  > 軟件

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

來(lái)源: 責(zé)編: 時(shí)間:2024-04-11 09:01:56 233觀看
導(dǎo)讀內(nèi)存影響性能。當(dāng)你的應(yīng)用程序代碼消耗太多內(nèi)存時(shí),你會(huì)得到一個(gè)卡頓的應(yīng)用程序,甚至可能會(huì)出現(xiàn)內(nèi)存耗盡的崩潰。當(dāng)你在web瀏覽器中運(yùn)行一個(gè)應(yīng)用程序時(shí),大部分應(yīng)用程序內(nèi)存存儲(chǔ)在Javascript堆中,而這個(gè)堆位于計(jì)算機(jī)的RAM內(nèi)

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

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

當(dāng)你與一個(gè)應(yīng)用程序進(jìn)行交互時(shí),JS堆可能會(huì)隨著時(shí)間的推移而增長(zhǎng)。你可以通過(guò)使用Chrome DevTools進(jìn)行剖析時(shí)觀察到這種增長(zhǎng)。N6k28資訊網(wǎng)——每日最新資訊28at.com

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

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

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

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

Javascript 與 Major GC 和 Minor GC

Major GC 和 Minor GC

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • 垃圾回收有兩種類型:Major GC 和 Minor GC。
  • Minor GC 通常很短暫,而 Major GC 則需要更長(zhǎng)的時(shí)間。
  • 在“任務(wù)”下看到它們作為幀的事實(shí)表明它們都在主應(yīng)用程序線程上運(yùn)行。
  • 因?yàn)樗鼈冊(cè)谥骶€程上運(yùn)行,它們會(huì)阻塞Javascript執(zhí)行,因?yàn)闉g覽器只有一個(gè)主線程來(lái)運(yùn)行你的Javascript代碼。
  • 由于它們阻塞了Javascript執(zhí)行,過(guò)多的GC會(huì)影響應(yīng)用程序的性能。

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

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

Major GC和Minor GC清理JS堆的兩個(gè)不同部分

我不是Firefox的用戶,我之所以將Firefox下載到我的筆記本電腦上,僅僅是因?yàn)樗钠饰龉δ堋irefox的剖析器是開源的,并且比Chrome的剖析器有更多的可視化功能。N6k28資訊網(wǎng)——每日最新資訊28at.com

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

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

你可能會(huì)注意到的第一件事是,Minor GC 發(fā)生頻率相當(dāng)高,而 Major GC 則不是。這是有很好的原因的,因?yàn)槿缜懊嫠觯琈inor GC 很短暫,而 Major GC 則需要更長(zhǎng)的時(shí)間。N6k28資訊網(wǎng)——每日最新資訊28at.com

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Chrome vs. Firefox

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

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

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

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

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

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

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

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

上一篇: 17個(gè)強(qiáng)大的 AI 工具,讓你的工作效率翻倍

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

標(biāo)簽:
  • 熱門焦點(diǎn)
  • 直屏旗艦來(lái)了 iQOO 12和K70 Pro同臺(tái)競(jìng)技

    旗艦機(jī)基本上使用的都是雙曲面屏幕,這就讓很多喜歡直屏的愛好者在苦等一款直屏旗艦,這次,你們等到了。據(jù)博主數(shù)碼閑聊站帶來(lái)的最新爆料稱,Redmi下代旗艦K70 Pro和iQOO 12兩款手
  • 小米降噪藍(lán)牙耳機(jī)Necklace分享:聽一首歌 讀懂一個(gè)故事

    在今天下午的小米Civi 2新品發(fā)布會(huì)上,小米還帶來(lái)了一款新的降噪藍(lán)牙耳機(jī)Necklace,我們也在發(fā)布結(jié)束的第一時(shí)間給大家?guī)?lái)這款耳機(jī)的簡(jiǎn)單分享。現(xiàn)在大家能見到最多的藍(lán)牙耳機(jī)
  • JavaScript學(xué)習(xí) -AES加密算法

    引言在當(dāng)今數(shù)字化時(shí)代,前端應(yīng)用程序扮演著重要角色,用戶的敏感數(shù)據(jù)經(jīng)常在前端進(jìn)行加密和解密操作。然而,這樣的操作在網(wǎng)絡(luò)傳輸和存儲(chǔ)中可能會(huì)受到惡意攻擊的威脅。為了確保數(shù)據(jù)
  • 虛擬鍵盤 API 的妙用

    你是否在遇到過(guò)這樣的問(wèn)題:移動(dòng)設(shè)備上有一個(gè)固定元素,當(dāng)激活虛擬鍵盤時(shí),該元素被隱藏在了鍵盤下方?多年來(lái),這一直是 Web 上的默認(rèn)行為,在本文中,我們將探討這個(gè)問(wèn)題、為什么會(huì)發(fā)生
  • 重估百度丨大模型,能撐起百度的“今天”嗎?

    自象限原創(chuàng) 作者|程心 羅輯2023年之前,對(duì)于自己的“今天”,百度也很迷茫。“新業(yè)務(wù)到 2022 年底還是 0,希望 2023 年出來(lái)一個(gè) 1。”這是2022年底,李彥宏
  • 消息稱小米汽車開始篩選交付中心:需至少120個(gè)車位

    IT之家 7 月 7 日消息,日前,有微博簡(jiǎn)介為“汽車行業(yè)從業(yè)者、長(zhǎng)三角一體化擁護(hù)者”的微博用戶 @長(zhǎng)三角行健者 發(fā)文表示,據(jù)經(jīng)銷商集團(tuán)反饋,小米汽車目前
  • iQOO 11S或7月上市:搭載“雞血版”驍龍8Gen2 史上最強(qiáng)5G Soc

    去年底,iQOO推出了“電競(jìng)旗艦”iQOO 11系列,作為一款性能強(qiáng)機(jī),iQOO 11不僅全球首發(fā)2K 144Hz E6全感屏,搭載了第二代驍龍8平臺(tái)及144Hz電競(jìng)屏,同時(shí)在快充
  • 2022爆款:ROG魔霸6 冰川散熱系統(tǒng)持續(xù)護(hù)航

    喜逢開學(xué)季,各大商家開始推出自己的新產(chǎn)品,進(jìn)行打折促銷活動(dòng)。對(duì)于忠實(shí)的端游愛好者來(lái)說(shuō),能夠擁有一款夢(mèng)寐以求的筆記本電腦是一件十分開心的事。但是現(xiàn)在的
  • 電博會(huì)與軟博會(huì)實(shí)現(xiàn)"線下+云端"的雙線融合

    在本次“電博會(huì)”與“軟博會(huì)”雙展會(huì)利好條件的加持下,既可以發(fā)揮展會(huì)拉動(dòng)人流、信息流、資金流實(shí)現(xiàn)快速交互流動(dòng)的作用,繼而推動(dòng)區(qū)域經(jīng)濟(jì)良性發(fā)展;又可以聚
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
欧美色网一区二区| 欧美国产日韩一区二区三区| 亚洲欧美日韩精品| 欧美日韩在线播放三区四区| 欧美日韩视频第一区| 免费日韩精品中文字幕视频在线| 亚洲视频精选在线| 激情欧美日韩| 欧美日韩免费看| 快播亚洲色图| 久久国内精品视频| 亚洲图色在线| 91久久久久久国产精品| 国产一区二区高清不卡| 亚洲天堂成人在线观看| 欧美一区在线直播| 国产精品卡一卡二| 欧美在线免费视频| 欧美黄色网络| 国产精品成人aaaaa网站| 久久激情中文| 欧美日本国产在线| 久久久福利视频| 久久精品91久久久久久再现| 99日韩精品| 国产精品v欧美精品v日韩| 精品91免费| 欧美日韩免费在线观看| 国产精品久久久久天堂| 欧美区二区三区| 欧美日韩一区二区免费视频| 国产亚洲欧美一区| 亚洲欧美偷拍卡通变态| 黑人巨大精品欧美一区二区小视频 | 国产精品推荐精品| 欧美日韩国产免费观看| 欧美一区二区成人| 国模私拍视频一区| 久久久91精品国产一区二区精品| 国内精品视频久久| 亚洲综合电影| 久久久精品国产免费观看同学| 久久久777| 亚洲午夜激情| 亚洲国产精品尤物yw在线观看| 欧美日韩不卡在线| 国模一区二区三区| 欧美日韩亚洲国产精品| 红桃视频国产精品| 在线一区二区三区四区五区| 国产欧美一区二区三区在线老狼 | 午夜精品久久久久| 久久精品国产精品| 欧美日韩亚洲综合在线| 亚洲第一中文字幕在线观看| 亚洲激情av| 亚洲精品日韩在线| 中文日韩欧美| 销魂美女一区二区三区视频在线| 久久国产一区二区| 国产精品福利在线| 激情亚洲网站| 亚洲欧洲精品一区二区三区 | 欧美在线观看一区二区三区| 久久九九99| 国产模特精品视频久久久久| 在线免费精品视频| 中国成人亚色综合网站| 欧美激情导航| 国产精品视区| 亚洲丰满少妇videoshd| 久久精品久久99精品久久| 国产欧美日韩视频一区二区| 亚洲国产精品视频一区| 久久久久久久999| 国产日韩欧美夫妻视频在线观看| 亚洲主播在线播放| 欧美99在线视频观看| 国产精品热久久久久夜色精品三区| 99re66热这里只有精品3直播| 午夜久久一区| 国产精品极品美女粉嫩高清在线| 中文一区字幕| 国产精品成人在线| 亚洲欧美日韩电影| 国产欧美日韩精品一区| 亚洲精品色婷婷福利天堂| 欧美不卡激情三级在线观看| 国产精品丝袜久久久久久app| 99日韩精品| 久久久久高清| 在线看片一区| 欧美成人免费在线观看| 亚洲精品黄网在线观看| 欧美日韩国产bt| 亚洲视频999| 国产精自产拍久久久久久| 欧美在线视频日韩| 好男人免费精品视频| 午夜欧美精品| 国产亚洲精品v| 亚洲欧美综合一区| 久久这里只有| 国产一区二区高清不卡| 中日韩视频在线观看| 欧美午夜精品伦理| 亚洲精品女人| 欧美午夜不卡| 亚洲美女视频在线免费观看| 久久一区二区精品| 亚洲国产精品t66y| 欧美综合第一页| 伊甸园精品99久久久久久| 欧美亚洲视频在线观看| 狠狠色狠狠色综合人人| 欧美一区二区三区日韩| 伊人一区二区三区久久精品| 欧美国产乱视频| 亚洲国产视频一区二区| 欧美精品日韩www.p站| 亚洲国产视频a| 免费一级欧美片在线播放| 一区二区三区在线高清| 欧美—级a级欧美特级ar全黄| 亚洲一二三区在线| 韩国精品在线观看| 欧美激情视频给我| 亚洲精一区二区三区| 美女视频黄a大片欧美| 国精产品99永久一区一区| 欧美+亚洲+精品+三区| 亚洲一区一卡| 国产精品呻吟| 亚洲专区免费| 亚洲国产精品成人综合| 国产精品久久久久久久第一福利 | 欧美亚洲综合另类| 国产欧美一区二区三区在线看蜜臀| 你懂的国产精品永久在线| 亚洲伊人久久综合| 国产精品私房写真福利视频| 麻豆精品传媒视频| 亚洲女同在线| 亚洲日本va午夜在线影院| 国产精品一卡二卡| 欧美经典一区二区三区| 久久激情视频久久| 亚洲无人区一区| 亚洲激情小视频| 国产欧美精品一区二区色综合| 欧美激情在线免费观看| 久久精品国产精品| 亚洲性线免费观看视频成熟| 国产精品视频一二| 欧美影院成人| 日韩午夜中文字幕| 影音先锋久久久| 欧美国产乱视频| 久久av一区二区三区漫画| av成人免费| 国产精品视频最多的网站| 免费日韩一区二区| 久久久久**毛片大全| 亚洲一区日韩在线| 亚洲精品一区二区三区在线观看 | 亚洲在线1234| 日韩视频在线观看国产| 国产精品久久综合| 欧美精品v国产精品v日韩精品| 久久电影一区| 亚洲国产一区二区三区在线播| 欧美日产国产成人免费图片| 久久露脸国产精品| 亚洲黄色三级| 一区二区三区无毛| 国产又爽又黄的激情精品视频| 国产精品美女一区二区| 欧美日韩黄色大片| 欧美激情aⅴ一区二区三区| 久久一二三四| 一本色道久久加勒比精品| 国产精品乱码人人做人人爱| 欧美一区二区视频在线| 一区二区三区波多野结衣在线观看| 国产区日韩欧美| 国产精品捆绑调教| 欧美视频一二三区| 欧美日韩精品一区二区天天拍小说| 欧美福利专区| 欧美激情偷拍| 欧美激情视频免费观看| 欧美成人午夜剧场免费观看| 久久综合九色99| 亚洲午夜精品久久| 亚洲伦理精品| 日韩视频在线观看国产| av成人天堂| 一本色道久久综合亚洲精品不卡| 亚洲卡通欧美制服中文| 亚洲精品久久久久中文字幕欢迎你 | 欧美日韩国产首页在线观看| 欧美日本一区| 欧美日韩三级电影在线| 欧美日韩在线播放一区二区|