漲姿勢!為什麼Chrome瀏覽器特愛吃記憶體

pingwest發表於2015-05-22

微軟用慣用的手法——改名——給 IE 被黑的一生畫上了句號。還好,它在技術段子圈裡早就有了接班人:Chrome。

Chrome 很好很強大,速度極快、功能很多。但同時它也是你的電腦記憶體不足或者耗電太快的罪魁禍首。沒辦法,Chrome 太愛吃記憶體了(如頭圖)。

為什麼?我們找到了 4 個最關鍵的答案,不需要特別懂技術也可以理解。

1. Chrome 把你在瀏覽器上做的每件事都拆成獨立的程式

在大多數 PC 作業系統中,各種軟體和服務是以程式(Process)的形態出現並儲存在系統的記憶體當中的。然而,隨著 Web 技術的發展,瀏覽器功能日益強大,現在大多數人會發現,使用電腦不再需要安裝各種各樣的軟體,很多工作在瀏覽器中就能完成。Chrome 支援各種各樣的外掛和擴充套件,為瀏覽器增添功能,其中很多外掛和擴充套件乾脆就已經是一個打包好可以在本地使用的軟體。

過多的軟體、功能和服務勢必意味著瀏覽器的體型會變得臃腫,而如果一個瀏覽器只是一個程式的話,一旦出現系統故障,整個瀏覽器就崩潰了——那意味著你瀏覽的所有內容、輸入的文字和開啟的軟體、觀看的視訊、在網頁上玩的小遊戲,全都沒了。而 Chrome 會把所有開啟的網頁標籤、外掛、擴充套件,以及播放的 Flash 視訊都拆成獨立的程式。這樣,一個程式崩潰,不會影響到瀏覽器的其他功能正常運轉。

這樣做的優勢是瀏覽器功能多,且快速穩定;劣勢就是佔用很多記憶體。

Chrome4

2. 在你沒點選 URL 之前,Chrome 已經在幫你載入了

更好的使用者體驗與更大的系統資源壓力就像是雙生子。Chrome 瀏覽器提供一個預載入功能(Chrome Prerendering),在使用者還沒有點選某個連結的時候就已經提前開始載入了。

比如,如果瀏覽的是部落格文章,Chrome 有可能會預先載入「下一篇博文」;再比如,如果你在 Google 上搜尋某個學術名詞的話,Chrome 有可能會預先載入來自維基百科的結果

有時候你會發覺,第一次登陸某個網頁的時候很慢,但後來再在位址列輸入訪問,會快很多。這是因為 Chrome 會基於歷史瀏覽記錄和對該網頁的安全性判斷,預先載入這個網頁。

3. 記憶體洩露

記憶體洩露是一個技術上的名詞,簡單來說,他的意思就是佔用記憶體的軟體或服務,在完成工作之後無法釋放那些不再使用的記憶體。歷史上有一些非常經典的記憶體洩露事故,比如在某個版本的 Mac OS X 作業系統上,以原生、快速和低記憶體以來著稱的 Safari 瀏覽器,竟然能把本機所有的記憶體全都佔掉,以至於其他程式無法正常工作,甚至系統都開始不穩定。

Chrome 瀏覽器也會出現記憶體洩露問題,不過現在瀏覽器本身已經比較穩定了。不穩定的地方在於部分樣式或功能複雜的網站,以及一些程式碼不乾淨的 Chrome 外掛和擴充套件。前幾天,一位 Android Chrome 工程師在 Reddit 上表示,有團隊正在積極研究如何解決桌面版 Chrome 的擴充套件和外掛記憶體洩露問題。

4. 開了太多標籤和外掛

前面提到,很多以擴充套件形式存在的 Chrome 本地應用功能也已經十分強大,Web 技術日新月異使得很多網站在瀏覽器中呈現所佔用的記憶體也已經不亞於一個普通的本地軟體。這個不用過多解釋。

Chrome 佔記憶體到底好不好?

你需要記住一句話:空閒的記憶體是沒用的。(free RAM is useless RAM)

記憶體的功能是在本地一個高速短期儲存空間內放置程式,從而在使用或未使用但需要喚醒的時候更快地載入出來。因此,短期的高記憶體佔用並不是壞事,它優化了使用體驗——可以說,記憶體存在的意義就是被佔用。

但長期高記憶體佔用就不是好事了。長期高記憶體佔用可能和前面提到的網頁/外掛/擴充套件記憶體洩露問題有關,也有可能由使用者不良使用習慣導致。過多記憶體被佔用會導致提供給其他軟體或服務的記憶體資源不足,導致系統不穩定。另外,絕大多數作業系統都有虛擬記憶體功能,也就是在硬碟上設立一塊空間當做記憶體。這是記憶體不足時的替代方案,顯然對硬碟的讀取速度要比對記憶體的讀取速度慢得多。

怎樣解放 Chrome 記憶體?

1. 檢視任務/程式管理器,關掉佔用大量記憶體的程式

在 Windows Chrome 上按 Shift+Esc,或者在 Mac 上點選視窗→工作管理員,喚醒 Chrome 自己的工作管理員。用這種方法,你可以關閉那些沒有使用但是依然在後臺佔用太多記憶體的標籤或程式。

Monitor-your-browser-with-Task-Manager

2. 解除安裝不需要的擴充套件和外掛

3. 保持 Flash 視訊播放外掛不自動播放

點選設定→高階設定→隱私設定→內容設定,選擇不自動開啟外掛。

plugin-chrome

4. 用工具來管理閒置的標籤

前兩天我們剛剛介紹過的 The Great Suspender 就是這樣一個優秀的工具。它可以根據設定自動休眠掉當前不使用的標籤,節省系統資源。

相關文章