用戶在 Windows 平臺上使用 Firefox 時,遇到的最常見的不穩(wěn)定原因就是崩潰,而且這一現(xiàn)象在 Windows 平臺上的嚴重程度遠高于 Linux 和 macOS。因此,Mozilla 花了大量的資源來減少 Firefox 的內(nèi)存消耗,并仔細監(jiān)測這些變化。然而,Mozilla 近日透露,他們此前所作出的所有努力都不如他們在 Firefox 105 中部署的一個小改變有效。
首先,要了解為什么在 Windows 上運行的應用程序與其他操作系統(tǒng)相比更容易耗盡內(nèi)存產(chǎn)生崩潰,就必須了解 Windows 如何處理內(nèi)存。 所有的現(xiàn)代操作系統(tǒng)都允許應用程序分配一塊地址空間。最初在沒有數(shù)據(jù)被存儲在其中時,這些塊只代表沒有物理內(nèi)存支持的地址范圍。當一個應用程序開始使用它所保留的地址空間時,操作系統(tǒng)將拿出一塊物理內(nèi)存來支持它,如果需要的話,可能會交換掉一些現(xiàn)有的數(shù)據(jù)。Linux 和 macOS 都是這樣工作的,Windows 也是如此,只是與其他操作系統(tǒng)相比,Windows 需要執(zhí)行一個額外的步驟。 在一個應用程序請求了一塊地址空間之后,應用需要在能夠使用它之前提交使用范圍,這個范圍需要 Windows 保證它總是能夠找到物理內(nèi)存來支持它。之后,Windows 的行為就像 Linux 和 macOS 一樣沒什么區(qū)別了。
因此,Windows 限制了可以提交的內(nèi)存大小,即機器的物理內(nèi)存加上交換文件的大小之和。 提交空間(commit space)是應用面對的硬限制,只要達到這個限制,內(nèi)存分配就會失敗。
Firefox 開發(fā)者在分析瀏覽器崩潰問題時發(fā)現(xiàn),在很多情況下發(fā)生崩潰時,用戶設備上的可用物理內(nèi)存仍然很多,但提交空間卻耗盡了。 因此他們決定采用一些技巧來規(guī)避這一問題,也就是當內(nèi)存分配失敗時,瀏覽器不是立即崩潰,而是先等待下,然后嘗試重新內(nèi)存分配。雖然這會導致瀏覽器卡住短暫的幾分之一秒,但遠比徹底崩潰好得多(當交換文件快滿時,Windows 會自動調(diào)整它的大小,增加可用的提交空間)。 Mozilla 在 Firefox 105 中應用了這一改變,顯著改進了瀏覽器的穩(wěn)定性。
下面的圖表顯示了用戶在每一個活躍的使用小時中經(jīng)歷了多少次內(nèi)存耗盡的瀏覽器崩潰(崩潰次數(shù)減少了 70% 以上,遠遠超過了 Mozilla 當初的預測)。
Mozilla 表示,雖然他們已經(jīng)在 Firefox 105 中實現(xiàn)了這項改進,但實際上這項改進還沒有徹底完成,因為目前延緩主進程會導致標簽頁崩潰次數(shù)小幅增加,這對用戶來說也是不愉快的使用體驗,雖然沒有完整的瀏覽器崩潰那么煩人,但團隊依然在嘗試減少這樣的情況發(fā)生。
-
內(nèi)存
+關注
關注
8文章
3002瀏覽量
73887 -
WINDOWS
+關注
關注
3文章
3524瀏覽量
88438 -
Firefox
+關注
關注
0文章
97瀏覽量
13650
原文標題:一個小改變,讓Firefox崩潰次數(shù)降低70%
文章出處:【微信號:OSC開源社區(qū),微信公眾號:OSC開源社區(qū)】歡迎添加關注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論