Comment libérer de la mémoire en «hibernant complètement» un processus?


10

Similaire à ceci: Comment «mettre en veille un processus» sous Linux / Windows?

Existe-t-il des méthodes permettant d'hiberner un processus de manière à ce qu'il ne reste pas en mémoire? Par exemple: si je ne veux pas utiliser Firefox, je ne veux pas en fermer le processus et que j'ai besoin de mémoire libre, alors comment puis-je vraiment hiberner le processus afin que la mémoire réservée par Firefox soit libérée?

J'ai besoin d'une solution pour Windows et Linux!

Réponses:


4

Si je ne veux pas utiliser Firefox, je ne veux pas en fermer le processus et que j'ai besoin de mémoire libre, alors comment puis-je vraiment hiberner le processus afin que la mémoire réservée par Firefox soit libérée?

Pour Windows, il existe Free Freezer Process .

Pour Linux et Mac OS X, il y a CrypoPID , comme mentionné dans la réponse de yeedl .


Si vous souhaitez proposer une solution personnalisée:

Regardez sous process dumpingWindows, par exemple. ProcDump , reprenez-le avec un débogueur CLI de WinDBG .

Regardez sous core dumpingLinux, par exemple. core , reprenez-le avec un débogueur CLI comme GNU GDB .

Je parie qu'une solution logicielle qui n'implique pas de débogueur est possible, mais c'est pour Stack Overflow .


Vous recherchez un cas d'utilisation très spécifique, pourquoi ne pas simplement suspendre et laisser échanger?

Vous passeriez plus de temps à exécuter et suspendre vos processus ...

Je pense que vous pouvez optimiser votre flux de travail d'une autre manière qui serait plus transparente.


5

Windows et Linux / Unix offrent tous deux un moyen de suspendre ou d'arrêter l'exécution d'un processus, en le supprimant de la liste des processus exécutables.

Cela n'affecte pas directement les pages de mémoire appartenant à un processus, mais au fil du temps, lorsque le système subit une pression pour la mémoire, ces pages seront de bons candidats à échanger sur le disque.

Essayer d'écrire un processus sur le disque pour une reprise ultérieure ne fonctionnera pas pour quelque chose de non trivial. Les poignées ouvertes du réseau et du système de fenêtrage échoueront dès que le processus reprendra.


Cela ne fonctionnerait pas non plus pour quelque chose de trivial. :) +1
user541686

1
Ces poignées ouvertes sont juste rouvertes ou stockées, donc ce n'est pas vraiment un problème ...
Tamara Wijsman

2

Je sais que dans Firefox, vous pouvez enregistrer une session.

Sous Linux, cela peut être fait avec CrypoPID .

Cette question et celle- ci essaient d'y répondre pour Windows, mais je n'ai pas trouvé une excellente solution pour enregistrer l'état d'une application dans un fichier comme je l'ai fait pour Linux.


1

Pour les fenêtres:

Je ne connais aucun moyen d'expulser complètement un processus de la mémoire sans le tuer, mais vous pouvez couper son jeu de travail en minimisant sa fenêtre principale. Microsoft a un article expliquant ceci: le jeu de travail d'une application est coupé lorsque sa fenêtre de niveau supérieur est réduite .

Donc, réduisez d'abord la ou les fenêtres principales, puis suspendez le processus comme suggéré dans la question que vous avez liée .

Vous pouvez accomplir les deux avec l' explorateur de processus toujours utile .

  • Processus de clic droit, Fenêtre -> Réduire
  • Cliquez de nouveau avec le bouton droit de la souris, Suspendre.

1

Sous Windows, certains programmes peuvent remplacer la mémoire de programme "inutilisée".
Un exemple d'un produit qui peut le faire est le Process Lasso commercial .
Cependant, même Process Lasso déconseille cette pratique.

De The Truth about Windows Memory Optimizers :

Il est préférable de laisser la gestion de la mémoire virtuelle à Windows et de ne pas la prendre en main. Tout avantage de ces programmes est une illusion et temporaire. Vous encourez les pénalités de pagination de la mémoire de retour tôt ou tard, même s'il semble que le programme que vous exécutez après le nettoyage se charge plus rapidement.

Maintenant, en ce qui concerne Firefox, voir Réduire l'utilisation de la mémoire de mozillaZine - Firefox , qui contient de nombreux conseils sur la façon de découvrir les extensions qui fuient la mémoire.

Il y a aussi l'extension Firefox Memory Fox qui:

Tenter de réduire l'utilisation de la mémoire RAM du navigateur en favorisant l'augmentation des mémoires RAM disponibles pour d'autres processus d'application. Espérons que cela favorise toutes les tentatives de récupération et de rétention de mémoire.

D'après mon expérience, cette extension ne fait que reporter l'inévitable saturation de mémoire de Firefox. La seule vraie solution est de fermer Firefox de temps en temps pour libérer de la mémoire.


1

Vous pouvez envoyer un signal STOP aux processus sous Linux. Un processus arrêté est comme suspendu . Pour le reprendre, envoyez le signal CONT du processus. Pour envoyer le signal, vous pouvez le faire:

kill -STOP process_id

kill -CONT process_id

Un processus arrêté sera échangé si le système nécessite plus de mémoire.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.