Membatasi penggunaan RAM di Chrome?

22

Ketika membiarkan beberapa tab terbuka di Google Chrome selama berjam-jam / hari, saya perhatikan bahwa beberapa halaman pada akhirnya menggunakan sejumlah besar RAM, ke titik di mana seluruh OS (XP) menjadi tidak responsif karena paging. Ketika saya beruntung, saya akhirnya dapat mem-bookmark daftar URL terbuka, tutup Chrome, dan mulai lagi; Ketika tidak, saya hanya harus membunuh Chrome dan berharap saya dapat memulihkan daftar URL terbuka.

  • Mengapa demikian? Memori bocor di plug-in?
  • Apakah ada cara untuk mengonfigurasi Chrome sehingga satu tab / halaman tidak akan menggunakan lebih dari jumlah RAM yang ditentukan?

Terima kasih.

OverTheRainbow
sumber
berapa banyak RAM yang Anda miliki?
Baarn
@OverTheRainbow - Mengapa tidak mempertimbangkan Page Snooze - chrome.google.com/webstore/detail/…
PeanutsMonkey
Saya memiliki 4GB, yang cukup kecuali ketika beberapa halaman web akhirnya meraih 500MB. Terima kasih atas tautannya di Page Snooze dan Session Buddy.
OverTheRainbow

Jawaban:

-2

Saya pikir Anda harus memilih untuk membeli RAM sebanyak yang OS Anda bisa tangani. Anda tidak boleh membatasi penggunaan RAM Chrome karena itu hanya akan merusak pengalaman berselancar Anda di Web. Dengan asumsi bahwa Anda menggunakan komputer Anda untuk berselancar di Internet sebagian besar waktu, Anda harus membiarkan Chrome mendapatkan semua sumber daya yang dibutuhkan untuk memberikan kinerja yang Anda inginkan agar Anda "nikmati" menjalankan tab-tab tersebut pada saat yang sama.

Saya tidak berpikir ada cara untuk membatasi penggunaan RAM setiap tab tetapi Anda dapat membatasi penggunaan Chrome sama sekali. Lihat di sini:

/programming/192876/set-windows-process-or-user-memory-limit

Saya lebih suka tidak melakukan itu, jika saya adalah Anda, jika saya ingin menjelajahi web dengan lancar.

WikiWitz
sumber
16
Itu bukan solusi saat Anda tidak memiliki kendali atas konten komputer yang Anda gunakan (yaitu komputer kantor)
Gnoupi
dalam hal ini akan lebih baik jika ada cara untuk mengatur 'prioritas' untuk tab yang dipilih (seperti tab aktif mendapatkan sebagian besar memori) karena dengan RAM terbatas dan dengan komputer Anda tidak memiliki pengguna adalah salah satu yang harus beradaptasi (dengan mengurangi jumlah tab yang terbuka) yang kontraproduktif.
WikiWitz
4
Chrome memakan RAM sebanyak yang didapatnya, jadi menambahkan lebih banyak RAM sama dengan memasukkan lebih banyak kayu ke dalam api, Chrome membakar lebih banyak.
JDuarteDJ
5
@WikiWitz, Anda meremehkan berapa banyak RAM yang dimakan Chrome. Saya memiliki 16 GB RAM fisik dan itu masih belum cukup.
Pacerier
2
"Dengan asumsi bahwa Anda menggunakan komputer Anda untuk berselancar di Internet sebagian besar waktu" - itu adalah keledai utama . Tidak semuanya Chromebook.
Piskvor
12
  1. Saya menulis sebuah program Python 2.5 yang membunuh penyaji chrome ketika mereka menggunakan lebih dari jumlah memori yang ditentukan. Saya menjalankan program ini di bawah watch. (perhatikan bahwa ia menggunakan modul psutil yang tidak termasuk dengan 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. Saya mengandalkan Session Buddy untuk memulihkan tab yang terbuka ketika chrome gagal mengembalikannya.

Dan D.
sumber
Bagaimana Chrome menangani penyairnya dibunuh? Perilaku apa yang ditunjukkan tab setelah penyajinya terbunuh? Oh, saya baru saja melihat komentar Session Buddy Anda, jadi itu berarti Chrome terkadang gagal mengembalikannya, oke. Apakah ini sering terjadi? Ini sangat rapi, terima kasih!
Matius
1
@ Manusia Tab yang menggunakan proses renderer yang terbunuh menjadi tab macet. Tetapi meskipun skrip di atas berfungsi baik dengan Chrome 12 di versi yang lebih baru, ia juga membunuh ekstensi yang tidak seperti di Chrome 12 dijalankan dalam proses renderer daripada di ekstensi.
Dan D.
@ Manusia Adalah mungkin untuk kehilangan tab terakhir jika Anda gagal mengklik restore . Bahkan jika Anda memiliki Last Tabsfile tersebut, tidak mungkin mengembalikan tab dari file itu. Saya mencoba untuk menentukan format dan mengekstrak URL dari itu dulu sekali. Itu tidak berhasil. Dan saya lebih percaya pada SQLite daripada format biner yang digunakan Chrome untuk menyimpan tab sesi saat ini, itulah sebabnya SB lebih baik.
Dan D.
@DanD., Apakah skrip ini aman? Apakah akhirnya akan menabrak seluruh Chrome?
Pacerier
@Pacerier Ya, kecuali ketika Chrome masih dalam fase pemuatan tab tertunda setelah memulai ulang, itu bukan.
Dan D.
4

Satu-satunya hal yang saya lihat sampai saat ini yang dapat melakukan ini adalah menjalankan chrome di dalam wadah dan membatasi ram kontainer .

Namun ini memiliki beberapa peringatan utama,

  • Menjalankan chrome rumit oleh pengaturan dockerize dan urutan peluncuran

  • untuk satu, Chrome sudah menggunakan wadah kernel untuk mengamplas utasnya; jadi Anda harus menjalankan container dengan semacam privilege root yang memungkinkannya bekerja. Ini bisa dielakkan, dan model wadah yang terhubung melakukannya. (Itu praktis semua yang dibutuhkan)

  • Anda hampir pasti akan kehilangan akselerasi GPU

  • membuat audio berfungsi adalah rumit, tetapi ditangani dalam model wadah yang ditautkan.

  • Apa pun yang Anda harapkan salah saat membatalkan garansi, Chrome tidak suka diberitahu untuk tidak menggunakan lebih banyak ram, dan akan bertindak dan mengamuk karenanya.

Tapi itu akhirnya berhasil.

Saya lebih tertarik menerapkan batas ram ini ke aplikasi Electron Shell yang tidak memiliki gambar docker prebuilt untuk memutarnya untuk Anda.


Di luar topik, tetapi saya ingin mencatat bahwa Firefox berperilaku sangat baik pada perangkat keras terbatas, tetapi saya tidak menganggap itu sebagai jawaban nyata.

ThorSummoner
sumber
Saya harus memperbarui jawaban ini untuk mengetahui lebih lanjut tentang bagaimana wadah hanyalah antarmuka cgroup, Anda dapat menggunakan cgroup sendiri untuk mencapai hal yang sama
ThorSummoner
1

Itu belum tentu plugin. Perhatikan bahwa halaman web tidak lagi statis. Beberapa halaman web hanya memiliki jumlah aktivitas async yang tidak sepele. Tambahkan aktivitas dari plug-in dan Anda mendapatkan beberapa yang tidak diketahui.

Obat terbaik yang saya temukan adalah mematikan halaman web dan memuatnya kembali. AFAIK, tidak ada cara untuk membatasi jumlah RAM yang digunakan laman web.

surfasb
sumber
1

Gunakan ekstensi TabsOutliner - ini akan memberi Anda cara mudah untuk "mematikan" tab tanpa benar-benar menghapusnya dari konteks dan daftar sesi Anda saat ini. Sangat berguna.

Ekstensi Tab Outliner

omnray
sumber
0

Matikan proses tab yang menggunakan memori dalam jumlah besar (saya perhatikan bahwa apa pun yang menggunakan Flash cenderung menggunakan 500MB +). Anda bisa memuat ulang tab yang mati nanti ketika Anda ingin kembali bekerja di dalamnya.

Bigbio2002
sumber
0

TabMemFree akan secara otomatis menangguhkan tab yang tidak aktif. Anda dapat menentukan berapa lama sebelum ia menangguhkan tab tidak aktif, dengan minimum 15 menit. Anda juga dapat memerintahkannya untuk mengabaikan tab yang disematkan.

Tab Wrangler adalah ekstensi lain untuk dipertimbangkan yang secara otomatis menangguhkan tab tidak aktif jika Anda mencari sedikit lebih banyak kontrol. Seperti TabMemFree, Anda dapat menentukan lamanya waktu sebelum tab dianggap tidak aktif dan mengaturnya untuk mengabaikan tab yang disematkan, tetapi Anda memiliki opsi tambahan untuk mengunci tab tambahan dan untuk menyinkronkan pengaturan tab Anda di antara komputer yang berbeda.

Daniel
sumber