Aider à la compréhension de la mémoire Windows - “Travailler Ensemble”
J'ai été suivi quelques fuites de mémoire dans mon application. Ça a été une vraie douleur, mais j'ai finalement resserré le tout. Cependant, il y a un bit de Windows gestion de la mémoire qui est source de confusion pour moi. Voici une copie de l'application de l'utilisation de la mémoire au fil du temps...
Time PrivateMemorySize64 WorkingSet64
20:00:36 47480, 50144
20:01:06 47480, 50144
20:01:36 47480, 50144
20:02:06 47480, 149540
20:02:36 47480, 149540
20:03:06 47480, 149540
Le jeu de travail qui a bondi de 49 MO de 146 au cours d'une période de 30 secondes. Ce qui s'est passé pendant la nuit, comme la demande a été fondamentalement à ne rien faire.
L'ensemble de travail (qui est ce que le gestionnaire des tâches m'indique) semble être en mesure d'être influencé par d'autres applications telles que les débogueurs (comme je l'ai appris alors que la recherche de fuites de mémoire). Après la lecture de la documentation sur ce que Travailler Ensemble est, je n'ai pas encore une bonne compréhension.
Toute aide est appréciée.
Mise à jour: Grâce à des liens des intervenants ainsi que des recherche, j'ai une meilleure compréhension sur la façon dont un processus distinct peut causer mon processus de travail mis à grandir. Bon à savoir qu'un pic dans le jeu de travail n'est pas nécessairement une indication que votre application est en fuite... raison de Plus pour ne pas compter sur le Gestionnaire des Tâches de mémoire de l'évaluation 🙂
Liens utiles:
CyberNotes: Windows Utilisation De La Mémoire Expliqué
OriginalL'auteur BabaBooey | 2011-03-23
Vous devez vous connecter pour publier un commentaire.
Simplement dit, l'ensemble de travail est la collection de pages de mémoire actuellement la propriété de vos processus et échangé pas (c'est à dire dans la RAM). C'est un peu inexact, cependant. La réalité est beaucoup plus complexe.
Windows maintient un minimum de travail de taille de l'ensemble et une durée maximum de la taille de l'ensemble de tous les processus. Le minimum de travail jeu est facile, c'est ce que Windows va accorder à tous les processus (tant qu'il peut, par des limites physiques).
La durée maximale du travail est plus que douteux. Si votre programme utilise plus de mémoire qu'à l'adaptation de son quota, Windows va baisser un peu les pages. Cependant, alors qu'ils ne sont plus dans votre travail, ces pages sont pas nécessairement "disparu".
Plutôt, ces pages sont supprimées à partir de votre jeu de travail et a déménagé à la piscine de pages disponibles. En conséquence, si un autre programme a besoin de plus de mémoire et pas effacé les pages sont de gauche plus de, vos pages seront effacées, et attribué à un autre processus. Lorsque vous accédez à eux, ils doivent être récupérés à partir du fichier d'échange à nouveau, éventuellement purge d'autres pages, si vous êtes encore au-dessus du maximum de la taille du jeu de travail.
Cependant, si personne ne demande plus de mémoire dans le temps de le dire (ou si toutes les exigences pourraient être satisfaits par des pages qui n'avaient pas de toute façon), puis accéder à l'une de ces pages seront simplement le faire "réapparaître comme par magie", et le coup d'une autre page dans sa place.
Ainsi, le processus peut avoir plus de pages en mémoire que sont réellement dans son ensemble, mais il n'est pas "officiellement" propre.
OriginalL'auteur Damon
La Résident Set/Jeu De Travail est la partie de L'Espace D'Adressage Virtuel qui est actuellement résidant dans La Mémoire Physique et n'est donc pas Permutée
Un étranger processus peut injecter du code dans votre application, il faut la commencer de nouvelles discussions, d'exécuter du code, à peu près tout. Ne sais pas si c'est ce qui s'est passé dans ce cas, mais c'est certainement faisable et vous voyez comment cela pourrait affecter l'ensemble de travail.
OriginalL'auteur Erik