Meta 宣布開(kāi)源了 MemLab,一個(gè)用于在基于 Chromium 的瀏覽器上的 JavaScript 應(yīng)用程序中查找內(nèi)存泄漏的工具。公告稱,找到并解決內(nèi)存泄漏的根本原因?qū)τ谠?Web 應(yīng)用程序上提供高質(zhì)量的用戶體驗(yàn)非常重要。MemLab 幫助 Meta 的工程師和開(kāi)發(fā)人員改善了用戶體驗(yàn),并在內(nèi)存優(yōu)化方面做出了重大改進(jìn)?!拔覀兿M材転楦蟮?JavaScript 社區(qū)做出貢獻(xiàn)”。
Facebook.com 在 2020 年被重新設(shè)計(jì)為單頁(yè)應(yīng)用程序 (SPA),該應(yīng)用程序的大部分渲染和導(dǎo)航使用客戶端 JavaScript。而 Meta 的大多數(shù)其他流行網(wǎng)絡(luò)應(yīng)用程序都使用了類(lèi)似的架構(gòu)來(lái)構(gòu)建,包括 Instagram 和 Workplace。該公司表示,雖然這種架構(gòu)使其能夠提供更快的用戶交互、更好的開(kāi)發(fā)人員體驗(yàn)和更像應(yīng)用程序的感覺(jué),但在客戶端維護(hù) Web 應(yīng)用程序狀態(tài)會(huì)使有效管理客戶端內(nèi)存變得更加復(fù)雜。
“使用我們的網(wǎng)絡(luò)應(yīng)用程序的人通常會(huì)立即注意到性能和功能正確性問(wèn)題。然而,內(nèi)存泄漏是另一回事;它不會(huì)立即被察覺(jué),因?yàn)樗淮螘?huì)占用一大塊內(nèi)存 —— 影響整個(gè) Web 會(huì)話并使后續(xù)交互變得更慢且響應(yīng)更慢。為了幫助我們的開(kāi)發(fā)人員解決這個(gè)問(wèn)題,我們構(gòu)建了 MemLab,這是一個(gè) JavaScript 內(nèi)存測(cè)試框架,它可以自動(dòng)進(jìn)行泄漏檢測(cè)并更容易找到內(nèi)存泄漏的根本原因。我們?cè)?Meta 使用 MemLab 成功地控制了不可持續(xù)的內(nèi)存增長(zhǎng),并識(shí)別了我們產(chǎn)品和基礎(chǔ)設(shè)施中的內(nèi)存泄漏和內(nèi)存優(yōu)化機(jī)會(huì)。我們已經(jīng)在 GitHub 上開(kāi)源了 MemLab,我們很高興能與 JavaScript 社區(qū)合作,讓開(kāi)發(fā)人員從今天開(kāi)始使用 MemLab?!?/p>
MemLab 的工作原理是通過(guò)預(yù)定義的測(cè)試場(chǎng)景運(yùn)行 headless 瀏覽器并對(duì) JavaScript heap snapshots 進(jìn)行差異分析來(lái)發(fā)現(xiàn)內(nèi)存泄漏。此過(guò)程分六個(gè)步驟進(jìn)行:
瀏覽器交互
區(qū)分 heap
細(xì)化內(nèi)存泄漏列表
生成 retainer traces
Clustering retainer traces
報(bào)告泄漏
MemLab 提供內(nèi)存泄漏檢測(cè)功能。對(duì)于瀏覽器內(nèi)存泄漏檢測(cè),MemLab 需要開(kāi)發(fā)人員提供的唯一輸入是一個(gè)測(cè)試場(chǎng)景文件,該文件定義了如何通過(guò) overriding Puppeteer API 和 CSS 選擇器的三個(gè)回調(diào)來(lái)與網(wǎng)頁(yè)進(jìn)行交互。MemLab 會(huì)自動(dòng)對(duì) JavaScript heap 進(jìn)行差異化處理,完善內(nèi)存泄漏,并對(duì)結(jié)果進(jìn)行匯總。
MemLab 的另一個(gè)特性是提供了 “JavaScript heap 的 Graph-view API”。Node.js 程序或 Jest test 也可以使用 graph-view API 來(lái)獲取其自身狀態(tài)的 heap graph view,進(jìn)行 self-memory 檢查,并編寫(xiě)各種內(nèi)存斷言。除了內(nèi)存泄漏檢測(cè),MemLab 還包括一組內(nèi)置的 CLI 命令和 API,用于尋找內(nèi)存優(yōu)化機(jī)會(huì)。
通過(guò)使用 MemLab 檢測(cè)和診斷內(nèi)存泄漏,Meta 方面稱,其在 2021 年上半年將 Facebook.com 上的 OOM 崩潰減少了 50%。
-
內(nèi)存
+關(guān)注
關(guān)注
8文章
3124瀏覽量
75269 -
瀏覽器
+關(guān)注
關(guān)注
1文章
1040瀏覽量
36302 -
應(yīng)用程序
+關(guān)注
關(guān)注
38文章
3337瀏覽量
59034
原文標(biāo)題:Meta開(kāi)源MemLab:JavaScript內(nèi)存泄漏檢測(cè)工具
文章出處:【微信號(hào):OSC開(kāi)源社區(qū),微信公眾號(hào):OSC開(kāi)源社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
電容降壓的工作原理

時(shí)域反射計(jì)的工作原理
步進(jìn)電機(jī)的工作原理

光柵的工作原理

控系統(tǒng)的工作原理是什么?
電冰箱的工作原理

評(píng)論