Est-ce que quelqu'un sait pourquoi je recevrais un OutOfMemoryException quand Taskmgr.exe dit que mon processus ne prend jusqu'à ~ 1 Go de mémoire?OutOfMemoryException quand je frappe 1 Go
Répondre
Si vous voulez un meilleur outil que Taskmanager télécharger The SysInternals Suite de MS et utiliser l'utilitaire Explorateur Process à surveiller votre application pendant son fonctionnement. Sélectionnez View-> Select Columns-> Process Memory et définissez les colonnes que vous souhaitez surveiller. Il vous donne une bien meilleure lecture de ce qui se passe en mémoire.
Cela dit mon pari est le manque de mémoire contiguë disponible dans votre Heap est le problème.
Il probablement isn't enough contiguous free memory à faire ce que vous voulez.
Voir here.
Bon point. Que faites-vous dans le code? –
Est-il possible que l'EDI limite la quantité de mémoire que vous pouvez utiliser? Dans ce cas, vous pouvez définir des paramètres d'exécution pour augmenter la quantité de mémoire disponible. Au moins, c'est comme ça en éclipse.
Si vous n'avez pas défini d'espace d'échange, l'augmentation de la taille de la mémoire virtuelle peut aider.
En outre, se rendre compte que, lorsque vous utilisez .NET, les limites de la mémoire de processus sur 32bit code .NET ont tendance à être beaucoup plus faible que les limites théoriques. Il est très fréquent de commencer à recevoir des erreurs de mémoire de quelque part entre 1,2 Go et 1,6 Go d'utilisation de la mémoire - bien en dessous de la limite théorique de 2 Go. (Cela est vrai même si l'allocation de petits morceaux de mémoire.)
Le passage à une plate-forme 64 bits serait plus probable d'éliminer ce problème. (Il est possible que votre 1 Go n'est pas tout à fait exact, que ce soit - taskmgr fait un très mauvais travail d'estimation de l'allocation de mémoire.)
C'est en fait ** plus ** susceptible de se produire à un seuil inférieur si vous allouez de petits objets, mais toujours assez grand pour être sur le LOH. Surtout quand la durée de vie des objets peut varier de manière significative. La fragmentation dans le GC peut causer beaucoup de maux de tête. – GrayWizardx
Eh bien, je considère tout objet assez grand pour être alloué sur le tas d'objets LARGE pour ne pas être un petit objet;) Mais oui, toutes les allocations LOH ont tendance à fragmenter votre système, et plus vous avez le pire. Cela peut arriver, même avec de petits objets qui sont sous les seuils de taille LOH. –
Où obtenez-vous l'exception? – SLaks