Como liberar memória "hibernando totalmente" um processo?


10

Semelhante a este: Como "hibernar um processo" no Linux / Windows?

Existem métodos para hibernar um processo de maneira que ele não fique na memória? Por exemplo: se eu não quero usar o Firefox e não quero fechar o processo, e preciso de memória livre, como posso realmente hibernar o processo para liberar a memória reservada pelo Firefox?

Preciso de solução para Windows e Linux!

Respostas:


4

Se eu não quiser usar o Firefox, e não quiser fechar o processo, e precisar de memória livre, como posso realmente hibernar o processo para liberar a memória reservada pelo Firefox?

Para Windows, existe o Free Process Freezer .

Para Linux e Mac OS X, existe o CrypoPID , conforme mencionado na resposta do yeedl .


Se você deseja criar uma solução personalizada:

Olhe para o process dumpingWindows, por exemplo. ProcDump , retome-o com um depurador CLI do WinDBG .

Procure core dumpingno Linux, por exemplo. núcleo , retome-o com um depurador CLI como o GNU GDB .

Aposto que uma solução baseada em software que não envolve um depurador é possível, mas isso é para Stack Overflow .


Você está procurando um caso de uso muito específico, por que não apenas suspendê-lo e deixá-lo trocar?

Você gastaria mais tempo executando e suspendendo seus processos ...

Acredito que você pode otimizar seu fluxo de trabalho de outra maneira que seria mais transparente.


5

O Windows e o Linux / Unix fornecem uma maneira de suspender ou interromper a execução de um processo, removendo-o da lista de processos executáveis.

Isso não afeta diretamente as páginas de memória pertencentes a um processo, mas com o tempo, à medida que o sistema fica sob pressão pela memória, essas páginas serão boas candidatas a serem trocadas para o disco.

Tentar gravar um processo em disco para retomada posterior não funcionará para nada não trivial. Alças abertas para a rede e o sistema de janelas falharão assim que o processo for reiniciado.


Também não funcionaria para nada trivial. :) +1
user541686

11
Esses identificadores abertos são apenas abriu novamente ou armazenada junto, de modo que não é realmente um problema ...
Tamara Wijsman

2

Eu sei que no firefox você pode salvar uma sessão.

No Linux, isso pode ser feito com o CrypoPID .

Esta e essa pergunta tentam respondê-la no Windows, mas não consegui encontrar uma ótima solução para salvar um estado de aplicativo em um arquivo, como fiz no linux.


1

Para Windows:

Não conheço nenhuma maneira de despejar completamente um processo da memória sem matá-lo, mas você pode aparar o conjunto de trabalho minimizando a janela principal. A Microsoft possui um artigo explicando o seguinte: O conjunto de trabalho de um aplicativo é aparado quando sua janela de nível superior é minimizada .

Portanto, primeiro minimize a (s) janela (s) principal (s) e, em seguida, suspenda o processo conforme sugerido na pergunta que você vinculou .

Você pode realizar ambos com o sempre útil Process Explorer .

  • Clique com o botão direito do mouse em Janela -> Minimizar
  • Clique com o botão direito novamente, Suspender.

1

No Windows, alguns programas podem trocar a memória do programa "não utilizado".
Um exemplo de produto que pode fazer isso é o comercial Process Lasso .
No entanto, mesmo o Process Lasso desaconselha essa prática.

Da verdade sobre os otimizadores de memória do Windows :

É melhor deixar o gerenciamento da memória virtual para o Windows e não levá-lo para suas próprias mãos. Qualquer benefício desses programas é uma ilusão e temporário. Você incorre nas penalidades da memória de paginação mais cedo ou mais tarde, mesmo que pareça que o programa executado após a limpeza seja carregado mais rapidamente.

Agora, no que diz respeito ao Firefox, consulte Reduzindo o uso de memória do mozillaZine - Firefox , que contém muitos conselhos sobre como descobrir quais extensões vazam memória.

Há também a extensão do Firefox Memory Fox, que:

Tentar reduzir o uso de memória RAM do navegador, promovendo o aumento das memórias RAM disponíveis para outros aplicativos, processa os requisitos de memória RAM. Felizmente, promovendo quaisquer tentativas de recuperação e retenção de memória.

Na minha experiência, essa extensão apenas adia o inchaço inevitável da memória do Firefox. A única solução real é fechar o Firefox de tempos em tempos para liberar memória.


1

Você pode enviar o sinal STOP para processos no Linux. Um processo parado é como pausado . Para continuar, envie o sinal do processo CONT. Para enviar o sinal, você pode fazer isso:

kill -STOP process_id

kill -CONT process_id

Um processo parado será trocado se o sistema exigir mais memória.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.