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