當(dāng)前Windows操作系統(tǒng)中的多個(gè)主流應(yīng)用程序普遍存在內(nèi)存消耗過(guò)大的現(xiàn)象,這一情況在內(nèi)存價(jià)格持續(xù)上漲的背景下尤為顯著。問(wèn)題的根源在于開發(fā)者傾向于選擇網(wǎng)頁(yè)應(yīng)用(Web Apps)開發(fā)模式而非原生應(yīng)用架構(gòu)。

這些通信類應(yīng)用成為消耗內(nèi)存的主要來(lái)源,即使處于后臺(tái)運(yùn)行狀態(tài)也會(huì)產(chǎn)生大量資源占用。通過(guò)實(shí)際測(cè)試發(fā)現(xiàn),這些應(yīng)用的原生版本并不會(huì)出現(xiàn)如此嚴(yán)重的資源消耗問(wèn)題。
其中Discord采用Electron框架構(gòu)建,本質(zhì)上是嵌入了完整的Chromium瀏覽器內(nèi)核。雖然官方宣稱其正常使用時(shí)占用的內(nèi)存資源通常低于1GB,但在現(xiàn)實(shí)使用環(huán)境中卻很容易增加到4GB的驚人水平。開發(fā)公司甚至不得不采用"在內(nèi)存超過(guò)4GB時(shí)自動(dòng)重啟"的臨時(shí)方案來(lái)回收內(nèi)存資源。
而WhatsApp的情況則更為嚴(yán)重,舊版UWP/WinUI客戶端運(yùn)行輕量快速,在閑置狀態(tài)下通常僅占用不到100MB內(nèi)存。新版客戶端改用了WebView2技術(shù),但本質(zhì)上仍是加載了web.whatsapp.com網(wǎng)頁(yè)內(nèi)容。該應(yīng)用在用戶登錄前就會(huì)占用約300MB內(nèi)存,完成聊天記錄同步后更會(huì)迅速增長(zhǎng)到1.2GB,同時(shí)伴隨著界面操作延遲和中央處理器使用率急劇上升的問(wèn)題。
即使是微軟公司自主開發(fā)的Teams應(yīng)用,在從Electron轉(zhuǎn)向WebView2后,其本質(zhì)上仍然屬于網(wǎng)頁(yè)應(yīng)用范疇。在閑置狀態(tài)下,該應(yīng)用的內(nèi)存占用量通常會(huì)穩(wěn)定在1GB左右。公司方面表示明年計(jì)劃通過(guò)重構(gòu)應(yīng)用架構(gòu)來(lái)解決這一問(wèn)題,但核心技術(shù)仍然依賴于WebView2架構(gòu)。
造成這些應(yīng)用程序大量消耗內(nèi)存的根本原因在于它們幾乎都不是真正的Windows本地應(yīng)用,而是嵌入了Chromium運(yùn)行環(huán)境的瀏覽器引擎。
無(wú)論是采用Electron、WebView2還是漸進(jìn)式網(wǎng)頁(yè)應(yīng)用(PWA),都需要在應(yīng)用內(nèi)部運(yùn)行完整的JavaScript執(zhí)行引擎、圖形處理單元渲染器、網(wǎng)絡(luò)協(xié)議棧以及安全保障框架等完整組件3。
每當(dāng)用戶開啟一個(gè)聊天窗口、連接到服務(wù)器或使用特定功能,都相當(dāng)于啟動(dòng)了一個(gè)獨(dú)立運(yùn)行的沙盒化進(jìn)程,這直接導(dǎo)致了內(nèi)存使用量的幾何級(jí)數(shù)增長(zhǎng)。





























浙公網(wǎng)安備 33010502007447號(hào)