Firefox 內存清理器真的有效嗎?
已發表: 2022-01-29
Firefox 在正常使用期間會消耗相當多的系統內存,這已不是什麼秘密。 雖然您打開的選項卡數量和已安裝的附加組件肯定有所貢獻,但即使是保守使用的開箱即用安裝也可能會報告相當多的內存使用情況。
這導致一些 Firefox 附加組件浮出水面,它們聲稱可以釋放瀏覽器不再需要的內存,但它們真的有效嗎?
關於 Windows 如何處理內存的兩分鐘概述
在我們深入研究內存清理器之前,了解一點 Windows 處理內存的方式很重要。 這很重要,因此我們可以解釋我們的實驗結果。
不用擔心,我們將在非常高的層次上介紹這一點,因此您不必成為超級極客就可以跟隨。
作為一個快速的免責聲明,這是對 Windows 內存管理基礎知識的非常簡短的總結。 這絕不應被視為權威或權威,因為它僅解釋到適用於本文主題的水平。
Windows 足夠聰明,知道未使用的物理內存是浪費的內存,因此它會將所需的所有內容加載到內存中。 但是,只有您的系統實際需要(Windows 和應用程序)並且當前正在使用的內容才會報告為已用物理內存。 其餘的(Windows 認為它需要的)駐留在所謂的虛擬內存中。
虛擬內存本質上是操作系統不主動需要但隨時可以加載到活動內存中的數據。 您可以使用以下公式在任何時候非常粗略地計算系統的虛擬內存量:
虛擬內存 =(總物理內存 - 已用/活動物理內存)+ 最大系統頁面文件大小
因此,假設您有一個具有 4 GB 物理內存和 6 GB 最大頁面文件的系統。 然後啟動 Windows 並打開一些應用程序(Outlook、Firefox 等),Windows 報告正在使用 2.5 GB 的物理內存。 這意味著您有 1.5 GB 的“未使用”物理內存和一個 6 GB 的頁面文件,總共有 7.5 GB 的可用虛擬內存。
請記住,操作系統足夠聰明,可以知道未使用的物理內存是浪費的內存,因此它將用它預期的你需要的物理內存填充剩餘的 1.5 個物理內存,以便幾乎可以立即按需訪問它。 這可以是任何東西,從最小化的後台程序數據到常見的操作系統功能。
那麼當 Windows 用完物理內存來用作虛擬內存時會發生什麼? 它將這些數據寫入系統頁面文件,該文件是您硬盤上的一個巨大(在我們的例子中為 6 GB)文件。 雖然這允許操作系統將幾乎所有需要保存在內存中的數據存儲在內存中,但在硬盤驅動器中寫入和檢索(也稱為頁面錯誤)這些信息比從物理內存中訪問要慢幾個數量級。 這就是為什麼您擁有的物理內存越多,系統運行的速度就越快。 您的系統使用其頁面文件的次數越少,執行速度就越快。
監控 Firefox 的內存使用情況
對於我們的調查,我們將簡單地使用 Windows 任務管理器。 我們將跟踪以下列(描述在 Microsoft 的頁面上定義):
- 工作集 = 私有工作集中的內存量加上進程正在使用的可被其他進程共享的內存量。
- 峰值工作集 = 進程使用的最大工作集內存量。
- 內存(私有工作集)= 工作集的子集,專門描述一個進程正在使用的內存量,不能被其他進程共享。
- 提交大小 = 保留供進程使用的虛擬內存量。
我們將使用僅加載 Memory Fox 附加組件的 Firefox 4.0.1 的開箱即用安裝。 在 Firefox 中,我們將打開以下選項卡,除了向上和向下滾動加載的頁面之外不會做任何事情。
在等待所有內容完成加載後,Windows 任務管理器會為 Firefox 報告以下內容。
現在,當我們啟動 Memory Fox 插件時,看看報告的內存使用量急劇下降。

另請注意,此附加組件啟動了一個新進程,該進程負責處理內存功能。
讓 Firefox 閒置並觀察 Working Set 和 Memory 值,您可以看到 Firefox 需要活動物理內存和內存清理插件回收此內存之間存在持續的鬥爭。
這是 Firefox 空閒時每隔幾秒報告的內存使用情況。
請注意工作集和內存值的下降。 這是回收系統內存的內存清理器。
上升了一點之後,你可以看到另一個下降。
泡沫。 沖洗。 重複。
此外,如果您只是切換選項卡並上下滾動加載的頁面,您會看到數字波動得更加劇烈,這將在下面解釋。
解釋結果
當你第一次看到它時,你會想,嘿,這很好用。 但是看看 Commit Size 列,你會發現這個值從來沒有真正改變過。 實際上,一旦您啟動內存清理插件,它就會上升。
請記住,提交大小列報告 Windows 運行相應應用程序所需的實際內存量(物理 + 虛擬)。 因此,在我們的示例中,大約 120 MB 在系統上專門為 Firefox 保留並處於活動狀態,並且駐留在未使用的物理內存和/或系統頁面文件中。 還要記住,如果需要使用頁面文件,則會對性能產生顯著影響,因為必須在硬盤上寫入和讀取虛擬內存,這比物理內存慢得多。
所以本質上,內存清理器正在將活動的物理內存移動到虛擬內存(因為內存被回收必須去某個地方)。 發生這種情況時,Firefox 不再擁有運行所需的內存,因此它必須要求 Windows 將所需的相應數據從虛擬內存移回物理內存。 我們繞了一圈又一圈……
充其量,這個過程根本沒有任何用處,最壞的情況是它會導致大量不需要的頁面錯誤,因為再次,如果 Windows 必須使頁面文件發揮作用,那麼就會對性能造成明顯的影響。 在沒有太多物理內存的系統上尤其如此(幾乎所有虛擬內存都保存在頁面文件中),這很諷刺,因為這些系統是內存清理器“設計”的。
整個故事的寓意很簡單,記憶清理器除了改變數字外什麼都不做。 任何操作系統都會知道如何適當地處理內存,所以讓他們做他們的事。
管理 Firefox 的內存使用
既然我們已經證明了內存清理插件並沒有真正做任何有用的事情,那麼對於 Firefox 使用的大量內存你能做些什麼呢? 這裡有一些建議:
- 刪除您不需要的附加組件(尤其是任何內存清理的附加組件)。
- 將您打開的標籤數量保持在最低限度。
- 定期關閉 Firefox 並重新啟動它。
- 為您的系統添加更多內存。
- 別擔心。
Firefox 的 Memory Fox Next 插件