Limitando o uso de RAM no Chrome?

19

Ao deixar várias guias abertas no Google Chrome por horas / dias, noto que algumas páginas acabam usando quantidades enormes de RAM, a ponto de todo o sistema operacional (XP) parar de responder devido à paginação. Quando tiver sorte, posso finalmente marcar a lista de URLs abertos, fechar o Chrome e começar de novo. Quando não estou, simplesmente preciso matar o Chrome e espero recuperar a lista de URLs abertos.

  • Por que isso? Vazamentos de memória em plug-ins?
  • Existe uma maneira de configurar o Chrome para que uma única guia / página não use mais do que uma quantidade definida de RAM?

Obrigado.

    
por OverTheRainbow 17.04.2012 / 08:59

6 respostas

0

Acho que você deve optar por comprar o máximo de memória RAM que seu sistema operacional puder suportar. Você não deve limitar o uso de RAM do Chrome, pois isso arruinará sua experiência de navegação na Web. Supondo que você use seu computador para navegar na Internet na maior parte do tempo, deixe o Google Chrome obter todos os recursos necessários para fornecer o desempenho que deseja "aproveitar" ao executar essas guias ao mesmo tempo.

Não acho que haja uma maneira de limitar o uso de RAM de cada guia individual, mas você pode limitar totalmente o uso do Chrome. Olha aqui:

link

Eu preferiria não fazer isso, se eu fosse você, se eu quiser navegar na web.

    
por 17.04.2012 / 09:24
10
  1. Eu escrevi um programa Python 2.5 que mata os renderizadores do Chrome quando eles usam uma quantidade de memória definida. Eu corro este programa em watch . (observe que ele usa o módulo psutil que não está incluso no 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. Eu confio no Session Buddy para recuperar as guias abertas quando o Chrome não consegue restaurá-las.

por 17.04.2012 / 12:59
2

A única coisa que eu vi até hoje que pode fazer isso é executar o cromo dentro de um contêiner e limite o número de contêineres .

No entanto, isso tem algumas ressalvas importantes,

  • A execução do cromo é complicada pela configuração do dockerize e pela sequência de lançamento

  • por um lado, o Chrome já usa contêineres de kernel para proteger seus segmentos; então você tem que executar o container com um tipo de privilégio de root que permite que isso funcione. Isso pode ser evitado e o modelo de contêiner vinculado faz isso. (faz praticamente tudo que precisa)

  • Você quase certamente perderá aceleração de gpu

  • fazer o áudio funcionar é complicado, mas manipulado no modelo de contêiner vinculado.

  • Qualquer outra coisa que você espere dar errado quando você anula sua garantia, o Chrome não gosta que alguém use mais memória ram e aja de bullying de acordo.

Mas finalmente funciona.

Estou mais interessado em aplicar esses limites de RAM aos aplicativos da Electron Shell que não possuem imagens docker pré-construídas para agrupá-los para você.

Off topic, mas quero observar que o Firefox está muito bem comportado em hardware limitado, mas eu não considero isso uma resposta real.

    
por 02.03.2016 / 22:47
1

Não é necessariamente um plugin. Observe que as páginas da Web não são mais estáticas. Algumas páginas da Web têm apenas uma quantidade não trivial de atividade assíncrona acontecendo. Adicione a atividade dos plug-ins e você tem algumas incógnitas.

O melhor remédio que encontrei é matar a página e recarregá-la. AFAIK, não há como limitar a quantidade de RAM usada por uma página da web.

    
por 17.04.2012 / 09:20
1

Use a extensão TabsOutliner - ela dará a você uma maneira fácil de "desligar" as guias sem realmente removê-las do seu contexto e da lista de sessões atual. Muito útil.

Extensão do Outliner das abas

    
por 23.12.2012 / 04:16
0

Mate o processo de tabulação que está usando a grande quantidade de memória (percebo que qualquer coisa com o Flash tende a usar 500MB +). Você pode apenas recarregar as abas mortas mais tarde quando quiser continuar trabalhando nelas.

    
por 24.04.2012 / 07:53