Comment rendre Windows 7 moins agressif dans la mémoire cache?

16

J'ai noté récemment que Windows 7 sur ma machine se plaignait de manquer de mémoire et que je devais fermer certains programmes. Cela indiquerait alors généralement un programme que j'exécute et qui a une fuite de mémoire et qui est devenu assez volumineux. Cependant, ces programmes commencent généralement à 20 Mo d'utilisation de la RAM et ce n'est qu'après avoir exécuté le programme entre 12 et 24 heures qu'ils atteignent au plus 200 Mo d'utilisation de la RAM. Je n'ai jamais plus de trois de ces programmes en cours d'exécution en même temps, donc 600 Mo de RAM maximum que j'ai jamais vus de mes programmes en cours d'exécution.

J'utilise Windows 7 x64 sur une machine avec 4 Go de RAM. Au début, j'ai oublié cela et je redémarrais les programmes lorsque Windows se plaignait, mais maintenant que je m'en souvenais, le fait que Windows se plaigne de moi en utilisant 600 Mo de RAM (moins de 2 Go même si vous incluez la mémoire utilisée par le système d'exploitation lui-même) semblait étrange . J'ai donc tiré la fenêtre des processus système pour voir mon utilisation totale de la mémoire à partir de mes processus et des processus système répertoriés. Cela représentait un peu plus de 700 Mo, donc j'étais toujours confus. Ensuite, je suis allé au moniteur de ressources et j'ai ouvert l'onglet Mémoire. Là je pense avoir trouvé ma réponse. Il a noté que je n'utilisais en fait que 33% de ma RAM. Cependant, dans la barre d'allocation des ressources de mémoire physique, la section Modified était jusqu'à 2,3 Go, la section Standby était jusqu'à 540 Mo, la section Free était inférieure à 20 Mo, la mémoire en cache était répertoriée à 2. 8 Go et la mémoire disponible ont été répertoriés à 550 Mo. (Ces valeurs étant légèrement arrondies, bien sûr, car les vôtres changent constamment au moment où j'écris ceci.)

Donc, apparemment, Windows 7 utilise plus de mémoire que moi. J'ai fait, à un moment donné dans le passé, apporté quelques modifications au menu des services Windows installé, mais cela ne visait qu'à désactiver certains services d'hébergement, car je ne voulais pas faire de partage de médias, activer le client Telnet et supprimer Internet. Explorer, mais ça pourrait être de ma faute. Existe-t-il un moyen de faire en sorte que Windows ne fasse pas cela ou du moins de mettre en cache beaucoup moins agressivement, donc j'arrête de recevoir ces avis de «mémoire insuffisante»?

grg-n-sox
la source
2
Le PO comprend mal le problème. Il manque de mémoire virtuelle sauvegardée. Toute son analyse de la mémoire physique n'est pas pertinente. Vous pouvez avoir beaucoup de mémoire physique libre mais une mémoire virtuelle sauvegardée libre insuffisante et l'avertissement de mémoire contextuelle est un avertissement indiquant que la mémoire virtuelle sauvegardée est insuffisante, pas la mémoire physique. (Bien qu'une fuite de mémoire physique d'un pilote puisse causer le problème indirectement.)
David Schwartz
"Le PO comprend mal le problème." De même que plusieurs des répondeurs. :(
Jamie Hanrahan

Réponses:

10

La mémoire de secours n'est pas un problème, elle est considérée comme "libre" et sera réallouée sur demande - elle contient juste de la mémoire récemment utilisée par les programmes, mais est maintenant libérée. Si un autre programme demande plus de mémoire que "Free", le système doit allouer de manière transparente à l'ensemble de secours (car la mémoire "de secours" n'est pas vraiment utilisée pour le moment).

Votre mémoire modifiée excessive est votre problème, car elle ne peut pas être réallouée facilement. Voyez ici . Cela est probablement dû à une fuite de mémoire (qui semble correspondre à votre premier paragraphe - quels programmes fuient?) Ou à un fichier d'échange trop petit (votre fichier d'échange est-il de taille fixe ou désactivé?).

DMA57361
la source
3
Comme je l'ai noté dans mon commentaire pour la réponse de CJM, j'ai fermé toutes mes applications qui étaient douteuses (certains jeux PC indépendants) et je n'ai plus que Task Manager, Resource Monitor, AVG et Chrome en cours d'exécution mais j'ai toujours 1,6 Go de mémoire modifiée. Je laisse mon ordinateur allumé pendant plusieurs jours, ce qui correspond au profil de l'article que vous avez lié. Cependant, une note sur cette page Web devait rechercher un processus avec une grande taille de validation. Actuellement, il s'agit d'un processus de nSvcAppFlt.exe. Il n'a qu'une taille de jeu de 30 Mo mais une taille de validation de 13,5 Go. Ce qui donne?
grg-n-sox
2
C'est le programme qui fuit votre mémoire. Voir également social.answers.microsoft.com/Forums/en-US/w7performance/thread/… . Retirez-le et tout devrait aller bien.
akid
Merci beaucoup. En fait, c'est un peu chouette. Donc, fondamentalement, si je remarque que ma RAM est consommée, je peux simplement accéder à mon moniteur de ressources, voir si la section Mémoire modifiée est énorme, et voir quel processus a une grande taille de validation et je trouve mon programme de fuite de mémoire? Certainement un bel outil de diagnostic pour Windows.
grg-n-sox
Désactivez ou mettez à niveau votre logiciel de pare-feu Nvidia.
David Schwartz
Vous avez trois "vous" qui devraient être "votre" dans le dernier paragraphe. (Je ne peux pas suggérer de modification, trop mineur.)
Shadow The Burning Wizard
4

La mise en cache préventive SuperFetch n'est pas votre problème. Windows 7 utilisera autant de mémoire disponible que possible pour mettre en cache de manière préventive ce qu'il pense que vous allez avoir besoin ensuite. S'il le fait bien, il vous fait gagner un peu de temps et vos applications apparaissent plus rapidement et plus réactives.

S'il se trompe et que vous avez besoin d'autres données, Superfetch libère une partie de la mémoire dont il dispose pour vous permettre de charger les données dont vous avez vraiment besoin. Voir: http://arstechnica.com/microsoft/news/2010/02/behind-the-windows-7-memory-usage-scaremongering.ars

Si vous rencontrez des problèmes de `` mémoire faible '', ce ne sera pas à cause de SuperFetch - car il abandonnera autant de mémoire que nécessaire si les applications le demandent. Votre mémoire disponible (550 Mo) est ce qui est utilisé par superfetch, donc clairement vous n'avez pas encore manqué de mémoire. Même lorsque vous utilisez toute votre RAM, votre machine retombera dans la mémoire virtuelle, bien que vous souhaitiez éviter cela en raison de la baisse des performances ...

Cela suggère donc que vos problèmes de `` mémoire faible '' sont dus à des problèmes ailleurs - peut-être qu'une de vos applications qui fuit consomme (et n'abandonne pas) d'autres types de ressources ...

Quoi qu'il en soit, la solution est plus susceptible d'être trouvée en s'attaquant à vos applications de buggy qu'en jouant avec SuperFetch ...

CJM
la source
J'obtiens que la section de veille de la mémoire fait partie de la mémoire cache, mais je dois sérieusement douter du problème de mes programmes. Je viens de les fermer tous maintenant, donc tout ce que j'ai en cours d'exécution est AVG, le gestionnaire de tâches, le moniteur de ressources et une seule fenêtre de Chrome avec 4 onglets. Ne dispose que de 1042 Mo avec 1417 Mo de mémoire disponible, mais j'ai toujours cet énorme morceau de mémoire modifiée occupant 1633 Mo que le Gestionnaire des tâches compte comme mémoire utilisée et me donnant des avis de mémoire faible. Existe-t-il un moyen de réduire la quantité de mémoire modifiée ou simplement de désactiver l'avis de mémoire faible?
grg-n-sox
0

Étant donné que vous ne pensez pas que le problème est dû à un programme avec une fuite de mémoire, l'alternative serait d'augmenter la taille du fichier de page.

Bien que le fichier d'échange ne soit pas votre mémoire principale, il permettra au système d'exploitation d'échanger plus de données sur le disque dur et, espérons-le, d'arrêter le message «mémoire insuffisante». La seule autre option serait de supprimer le programme associé au processus qui a l'énorme empreinte de 13 Go, bien que je ne sache pas de quel programme aurait besoin pour paginer autant de mémoire, sauf s'il s'agissait d'un jeu PC haut de gamme ou d'un logiciel de rendu 3D.

Britton
la source
0

D'après mon expérience, le fluage de la mémoire de secours est un vrai problème. Par exemple, si j'exécute Snagit en mode fenêtres déroulantes pour un article volumineux, certaines parties de l'article ne seront pas capturées lors de l'exécution sur la mémoire de secours uniquement. Dans tous les cas, je trouve que mon ordinateur fonctionne lentement sur la mémoire de secours.

Pour résoudre le problème, j'utilise l'optimiseur de mémoire des utilitaires Glary gratuits. Mon ordinateur a 6 GIG de mémoire. Lorsque je démarre pour la première fois, j'ai environ 2 GIG de mémoire en cours d'utilisation, 2 GIG de veille et 2 GIG de ce que j'appelle de la mémoire libre gratuite selon le moniteur de ressources de Windows. En une demi-journée environ, toute ma mémoire Free-Free se transformerait en mémoire de secours, que j'utilise ou non l'ordinateur. J'ai maintenant l'optimiseur de mémoire Glary Utilities démarré avec Windows et je peux faire fonctionner mon ordinateur indéfiniment en ayant les 2 GIG de mémoire libre disponible.

Chaque fois que je m'assois pour une autre session, je double-clique d'abord sur l'icône de la barre d'optimisation de la mémoire et fais une optimisation; demandant que mes 2 GIG originaux de mémoire Free-Free soient libérés. Je peux en demander plus, mais c'est le maximum qu'il libérera malgré tout. Il faut environ 30 secondes pour que l'optimiseur se termine, ce qui est beaucoup moins que celui requis pour un redémarrage. Il a un mode d'auto-optimisation mais je n'ai pas pu comprendre comment le faire fonctionner.

James Horner
la source
La mémoire de secours n'est pas un problème.
Jamie Hanrahan
L'optimiseur de mémoire doit être supprimé. La RAM de secours est de la RAM qui était récemment "utilisée" dans les processus. Il a été retiré de ces processus en raison du remplacement de l'ensemble de travail, mais il contient toujours ce qu'il a fait lorsqu'il était "en cours d'utilisation". Si un processus a besoin de ce qu'il y a dans l'une de ces pages, la page peut être retournée rapidement au processus. C'est pourquoi la mise en veille est considérée comme faisant partie du décompte du "cache". Mais la veille est également aussi «disponible» pour d'autres utilisations que la RAM libre. Votre "optimiseur de mémoire" vient de déplacer un tas de pages de Veille à Libre, c'est-à-dire que vous avez abattu le cache de Veille [...]
Jamie Hanrahan
[...] sans plus de RAM disponible. Puisque "Standby" était toujours "Available" de toute façon! Avec Vista et versions ultérieures, Superfetch peut désormais utiliser une partie de Standby pour sa mise en cache proactive des fichiers, mais les pages sont toujours réutilisables pour être utilisées par d'autres processus selon les besoins. Donc, SuperFetch n'enlève aucune page de "Disponible" non plus. Débarrassez-vous du "gestionnaire de mémoire", il nuit aux performances de votre système, provoquant des E / S disque inutiles.
Jamie Hanrahan
-1

Pour résoudre ce problème

Allez à start-run-msconfig, puis services et supprimez la coche de "Windows driver foundation". cliquez sur ok et redémarrez la machine.

N'oubliez pas - Seules les étapes mentionnées ci-dessus résoudront ce problème. Si vous avez désactivé les services.msc, il est toujours actif au moment du démarrage du système d'exploitation et il bloquera votre mémoire.

Pour vérifier cela, utilisez l'outil

user261975
la source
La désactivation du service WDF désactivera tous les périphériques qui dépendent de ce modèle de pilote. C'est une mauvaise idée.
Jamie Hanrahan