限制 Chrome 中 RAM 的使用?

限制 Chrome 中 RAM 的使用?

當在 Google Chrome 中開啟多個分頁數小時/數天時,我注意到某些頁面最終會使用大量 RAM,以至於整個作業系統 (XP) 由於分頁而變得無響應。當我幸運時,我終於可以為開啟的 URL 清單添加書籤,關閉 Chrome,然後重新開始;當我不這樣做時,我必須殺死 Chrome 並希望能夠恢復開啟的 URL 清單。

  • 這是為什麼?插件記憶體洩漏?
  • 有沒有辦法配置 Chrome,以便單一選項卡/頁面不會使用超過設定數量的 RAM?

謝謝。

答案1

我認為你應該選擇購買作業系統可以處理的盡可能多的記憶體。您不應該限制 Chrome 的 RAM 使用量,因為它只會破壞您的網路體驗。假設您大部分時間都使用電腦上網,您應該讓 Chrome 獲得所需的所有資源,以便提供您希望同時「享受」運行這些選項卡的效能。

我認為沒有辦法限制每個分頁的 RAM 使用量,但您可以完全限制 Chrome 的使用量。看這裡:

https://stackoverflow.com/questions/192876/set-windows-process-or-user-memory-limit

如果我是你,如果我想要流暢的網路衝浪,我寧願不這樣做。

答案2

  1. 我編寫了一個 Python 2.5 程序,當 chrome 的渲染器使用超過一定數量的記憶體時,它會殺死它們。我在 下運行這個程式watch。 (請注意,它使用普蘇蒂爾Python 中不包含該模組。

    import sys, os, psutil
    
    if len(sys.argv) == 2:
        try:
            limit = int(sys.argv[1])
        except:
            limit = 200 # default 200MB
    else:
        limit = 200
    
    uid = os.getuid()
    for p in psutil.get_process_list():
        try:
            if (p.name == 'chrome' and any('type=renderer' in part for part in p.cmdline)
               and p.uid == uid):
                m = p.get_memory_info()
                #print p.pid,m, m.rss / 1024 / 1024, m.vms / 1024 / 1024
                if (m.rss / 1024 / 1024) > limit: # kill if rss is greater than limit
                    print 'Killed', p.pid
                    p.kill()
        except psutil.error.NoSuchProcess:
            pass
        except psutil.error.AccessDenied:
            pass
    
  2. 我依靠會話好友當 Chrome 無法恢復開啟的分頁時,恢復開啟的分頁。

答案3

到目前為止我見過的唯一可以做到這一點的是在容器內執行 chrome限制容器內存

然而,這有一些重要的警告,

  • dockerize 設定和啟動順序使運行 chrome 變得複雜

  • 其一,Chrome 已經使用核心容器來沙箱其線程;因此,您必須使用某種 root 權限來運行容器,以使其能夠正常運作。這是可以規避的,連結容器模型就是這樣做的。 (它幾乎做了它需要做的一切)

  • 你幾乎肯定會失去 GPU 加速

  • 讓音訊正常工作很複雜,但在連結容器模型中處理。

  • 無論您預計在保固失效後會出現什麼問題,Chrome 都非常不喜歡被告知不要使用更多內存,並且會相應地表現出行為和發脾氣。

但它最終確實有效。

我更感興趣的是,將這些 ram 限制應用於 Electron Shell 應用程序,這些應用程式沒有預先建立的 docker 映像來為您調整它們。


題外話,但我想指出,Firefox 在有限的硬體上表現得很好,但我不認為這是一個真正的答案。

答案4

它不一定是插件。請注意,網頁不再是靜態的。有些網頁正在進行大量的非同步活動。添加插件的活動,您會得到一些未知數。

我發現的最好的補救措施是終止該網頁並重新加載它。 AFAIK,沒有辦法限制網頁使用的 RAM 量。

相關內容