Qu'est-ce que “la Taille Virtuelle” dans sysinternals process explorer
Mon application fonctionne pour quelques heures, Il n'y a pas d'augmentation de valeur ( vmsize, de mémoire) du Gestionnaire des Tâches. Mais après quelques heures, je sors de la mémoire des erreurs.
Dans sysinternals je vois que "la Taille Virtuelle" est contineously croissante, et quand il atteindre environ 2 GO j'ai commencer à obtenir des erreurs de mémoire.
Alors, quel genre de fuite de mémoire ?
Comment puis-je démontrer avec un code ? Est-il possible de reproduire la même chose avec n'importe quel morceau de code où aucun de la mémoire de l'augmentation de la valeur, mais seulement la Taille Virtuelle dans sysinternsl process explorer augmentation ?
merci pour toutes les suggestions
OriginalL'auteur robert | 2010-06-12
Vous devez vous connecter pour publier un commentaire.
Virtuel de la taille est le nombre de pages que le processus a alloué, ceux
pages pas actuellement dans le jeu de travail (physiquement chargé dans la RAM) sera dans le système de fichier de la page.
Généralement vous allouer de la mémoire n'est pas libérée. Cela peut être difficile à suivre dans le code sans outils spéciaux comme Rationnelle Purifier ou Boundschecker par exemple. Avec sysinternals vous voyez qu'il doit y avoir une fuite, mais il ne sera pas, par aucun moyen de vous dire où...
Si votre logiciel n'est pas si grande, vous pouvez essayez de vous déconnecter de la "nouvelle" et "supprimer" et voir si il y a trop d'objets dans la mémoire par la gestion des listes d'objets alloués (faire de votre propre mémoire débogueur pour ainsi dire). Il y a quelques aides dans le monde de windows comme le CRT de vérification de mémoire utils à partir de Microsoft. Ils sont utiles dans certains cas.
OriginalL'auteur jdehaan
À partir du son des choses, vous êtes en cours d'exécution hors de l'espace d'adressage. Windows 32 bits divise l'espace d'adressage de la moitié, la moitié pour le programme utilisateur et la moitié pour le système, de sorte que chacun reçoit 2 Gigaoctets.
La cause la plus fréquente de cette fragmentation de l'espace mémoire, au point que vous ne pouvez pas trouver un morceau qui est assez grand pour une allocation. Malheureusement, sans en savoir plus sur ce que vous faites, il est difficile de deviner pourquoi passe bien.
OriginalL'auteur Jerry Coffin
Selon ce fil sur le forum sysinternals, la taille Virtuelle correspond à l'espace d'adressage du processus (j'imagine engagés et réservé des pages de mémoire)
OriginalL'auteur Anders
Il semble que la Taille Virtuelle inclut les pages allouées avec les types suivants:
MEM_MAPPED (pour les données vues)
MEM_IMAGE (pour l'image exécutable vues)
MEM_PRIVATE (d'habitude alloué de mémoire)
Ce n'est pas le seul "mémoire" pour les données, mais comprend également l'espace de la page *.dll-s et FileMapping mécanisme.
OriginalL'auteur bruziuz