¿Limitando el uso de RAM en Chrome?


22

Cuando dejo varias pestañas abiertas en Google Chrome durante horas / días, noto que algunas páginas terminan usando grandes cantidades de RAM, hasta el punto en que todo el sistema operativo (XP) deja de responder debido a la paginación. Cuando tengo suerte, finalmente puedo marcar la lista de URL abiertas, cerrar Chrome y comenzar de nuevo; Cuando no lo estoy, simplemente debo matar a Chrome y esperar poder recuperar la lista de URL abiertas.

  • ¿Porqué es eso? ¿Fugas de memoria en complementos?
  • ¿Hay alguna forma de configurar Chrome para que una sola pestaña / página no use más de una cantidad establecida de RAM?

Gracias.


¿Cuánta RAM tienes?
Baarn el

@OverTheRainbow - ¿Por qué no considerar Page Snooze? - chrome.google.com/webstore/detail/…
PeanutsMonkey

Tengo 4 GB, que es suficiente, excepto cuando algunas páginas web terminan ganando 500 MB. Gracias por los enlaces en Page Snooze y Session Buddy.
OverTheRainbow

Respuestas:


-2

Creo que debería optar por comprar tanta RAM como pueda manejar su sistema operativo. No debe limitar el uso de RAM de Chrome porque arruinará su experiencia de navegación en la Web. Suponiendo que usa su computadora para navegar por Internet la mayor parte del tiempo, debe permitir que Chrome obtenga todos los recursos que necesita para ofrecer el rendimiento que desea para que "disfrute" al ejecutar esas pestañas al mismo tiempo.

No creo que haya una manera de limitar el uso de RAM de cada pestaña individual, pero puede limitar el uso de Chrome por completo. Mira aquí:

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

Preferiría no hacer eso, si fuera usted, si quiero navegar sin problemas.


16
Eso no es realmente una solución cuando no tienes control sobre el contenido de la computadora que estás usando (es decir, la computadora del trabajo)
Gnoupi

en ese caso, sería bueno si hubiera una forma de establecer 'prioridades' para las pestañas seleccionadas (como la pestaña activa obtiene la mayor parte de la memoria) ya que con RAM limitada y con una computadora que no es de su propiedad, el usuario es el que debe adaptarse (reduciendo el número de pestañas abiertas) que es contraproducente.
WikiWitz

44
Chrome consume tanta RAM como sea posible, por lo que agregar más RAM es lo mismo que poner más leña en el fuego, se quema más.
JDuarteDJ

55
@WikiWitz, estás subestimando la cantidad de RAM que come Chrome. Tengo 16 GB de RAM física y todavía no es suficiente.
Pacerier

2
"Asumir que usas tu computadora para navegar por Internet la mayor parte del tiempo", esa es una gran suposición. No todo es una Chromebook.
Piskvor

12
  1. Escribí un programa Python 2.5 que mata los renderizadores de Chrome cuando usan más de una cantidad establecida de memoria. Ejecuto este programa bajo watch. (tenga en cuenta que utiliza el módulo psutil que no está incluido con 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. Confío en Session Buddy para recuperar las pestañas abiertas cuando Chrome no puede restaurarlas.


¿Cómo maneja Chrome sus asesinos siendo asesinados? ¿Qué comportamiento exhibe la pestaña después de matar a su renderizador? Oh, acabo de ver tu comentario de Session Buddy, así que eso significa que Chrome no puede restaurarlos a veces, está bien. ¿Esto sucede a menudo? Esto es realmente genial, gracias!
Mateo

1
@Human Las pestañas que utilizaron ese proceso de renderización que se eliminó se convierten en pestañas bloqueadas. Pero aunque el script anterior funciona bien con Chrome 12 en versiones posteriores, también elimina las extensiones que, a diferencia de Chrome 12, se ejecutan en procesos de representación en lugar de en extensiones.
Dan D.

@ Humano Es posible perder las últimas pestañas si no puede hacer clic en restaurar . Además, incluso si tiene el Last Tabsarchivo, no es posible restaurar pestañas desde ese archivo. Intenté determinar el formato y extraer las URL una vez hace mucho tiempo. No fue exitoso. Y tengo más confianza en SQLite que en el formato binario que Chrome usa para almacenar las pestañas de la sesión actual, razón por la cual SB es mejor.
Dan D.

@DanD., ¿Es seguro este script? ¿Terminará bloqueando todo el Chrome?
Pacerier

@Pacerier Sí, excepto cuando Chrome todavía está en su fase de carga de pestañas retrasada después de reiniciar, no lo está.
Dan D.

4

Lo único que he visto hasta la fecha que puede hacer esto es ejecutar Chrome dentro de un contenedor y limitar la memoria RAM de los contenedores .

Sin embargo, esto tiene algunas advertencias importantes,

  • La ejecución de Chrome es complicada por la configuración de dockerize y la secuencia de inicio

  • por un lado, Chrome ya usa contenedores de kernel para proteger sus hilos; por lo tanto, debe ejecutar el contenedor con un tipo de privilegio de raíz que permita que funcione Esto se puede evitar, y el modelo de contenedor vinculado lo hace. (hace prácticamente todo lo que necesita)

  • Seguramente perderá la aceleración de la CPU

  • hacer que el audio funcione es complicado, pero se maneja en el modelo de contenedor vinculado.

  • Independientemente de lo que espere que salga mal cuando anule su garantía, a Chrome le disgusta violentamente que le digan que no use más carnero, y actuará de manera violenta.

Pero finalmente funciona.

Estoy más interesado en aplicar estos límites de ram a las aplicaciones de Electron Shell que no tienen imágenes acopladas preconstruidas para que las pueda utilizar.


Fuera del tema, pero quiero señalar que Firefox se comporta muy bien en hardware limitado, pero no considero que sea una respuesta real.


Debería actualizar esta respuesta para contar más acerca de cómo los contenedores son solo una interfaz cgroup, puede usar cgroups usted mismo para lograr lo mismo
ThorSummoner

1

No es necesariamente un complemento. Tenga en cuenta que las páginas web ya no son estáticas. Algunas páginas web simplemente tienen una cantidad no trivial de actividad asincrónica. Agregue la actividad de los complementos y obtendrá algunas incógnitas.

El mejor remedio que he encontrado es matar la página web y volver a cargarla. AFAIK, no hay forma de limitar la cantidad de RAM que usa una página web.



0

Elimine el proceso de pestañas que usa la gran cantidad de memoria (noto que cualquier cosa con Flash tiende a usar 500MB +). Puede volver a cargar las pestañas muertas más adelante cuando desee continuar trabajando en ellas.


0

TabMemFree suspenderá automáticamente las pestañas inactivas. Puede determinar cuánto tiempo antes de suspender las pestañas inactivas, con un mínimo de 15 minutos. También puede indicarle que ignore las pestañas ancladas.

Tab Wrangler es otra extensión a tener en cuenta que suspende automáticamente las pestañas inactivas si buscas un poco más de control. Al igual que TabMemFree, puede determinar el período de tiempo antes de que una pestaña se considere inactiva y configurarla para que ignore las pestañas ancladas, pero tiene la opción adicional de bloquear pestañas adicionales y sincronizar la configuración de sus pestañas entre diferentes computadoras.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.