Como liberar memória “totalmente hibernando” um processo?

9

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

Existem métodos para hibernar um processo de forma que ele não permaneça na memória? Por exemplo: se eu não quiser usar o Firefox e não quiser fechar o processo dele, e precisar de memória livre, como posso realmente hibernar o processo para liberar a memória reservada pelo Firefox?

Eu preciso de solução para o Windows e o Linux!

    
por LanceBaynes 25.05.2011 / 17:09

6 respostas

4

If I don't want to use Firefox, and don't want to close the process of it, and I need free memory, then how can I really hibernate the process so the memory reserved by Firefox is freed up?

Para o Windows, há freezer freezer .

Para Linux e Mac OS X, há CrypoPID , conforme mencionado em resposta de yeedl .

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

Olhe para process dumping no Windows, por exemplo. ProcDump , retome-o com um depurador de CLI de WinDBG .

Olhe para core dumping no Linux, por exemplo. núcleo , retome-o com um depurador de CLI como GNU GDB .

Aposto que uma solução baseada em software que não envolva um depurador é possível, mas isso é para o estouro de pilha .

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

Você gastaria mais tempo fazendo seus processos serem executados e suspendendo ...

Acredito que você pode otimizar seu fluxo de trabalho de outra forma que seria mais perfeita.

    
por 14.06.2011 / 13:16
5

O Windows e o Linux / Unix fornecem uma maneira de suspender ou impedir 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 ao longo do tempo, à medida que o sistema fica sob pressão por memória, essas páginas serão boas candidatas para trocar para o disco.

Tentar escrever um processo em disco para retomar mais tarde não vai funcionar para nada não trivial. As alças abertas para a rede e o sistema de janelas falharão assim que o processo for retomado.

    
por 25.05.2011 / 19:02
2

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

No Linux, isso pode ser feito com CrypoPID .

Esta pergunta e esta alguém tenta respondê-la para o Windows, mas não consegui encontrar uma ótima solução para salvar um estado de aplicativo para um arquivo como eu fiz para o linux.

    
por 25.05.2011 / 17:26
1

Para o Windows:

Eu não conheço nenhuma maneira de remover completamente um processo da memória sem matá-lo, mas você pode cortar seu conjunto de trabalho minimizando sua janela principal. A Microsoft tem um artigo explicando isso: O conjunto de trabalho de um aplicativo é cortado quando sua janela de nível superior é minimizada .

Portanto, primeiro minimize as janelas principais e suspenda o processo como sugerido no -linux-windows "> pergunta que você ligou .

Você pode realizar as duas coisas com o sempre útil Process Explorer .

  • Processo de clique com o botão direito, Janela - > Minimize
  • Clique com o botão direito novamente, suspender.
por 09.06.2011 / 02:24
1

No Windows, alguns programas podem trocar memória de programa "não usada".
Um exemplo de um produto que pode fazer isso é o Process Lasso comercial.
No entanto, até mesmo o Process Lasso aconselha contra essa prática.

De A verdade sobre os otimizadores de memória do Windows :

It is best to leave the management of virtual memory to Windows and not take it into your own hands. Any benefit from these programs is an illusion and temporary. You incur the penalties of paging memory back in sooner or later, even if it appears that the program you run after the cleanup loads faster.

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

Existe também a extensão do Firefox Memory Fox que:

Attempting to reduce the browser's RAM Memory usage promoting the increase of available RAM memories for other application processes RAM memory requirements. Hopefully, fostering any attempts of Memory Recovery and Retention.

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

    
por 09.06.2011 / 16:47
1

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

kill -STOP process_id

kill -CONT process_id

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

    
por 10.06.2011 / 09:57