2010-10-29 8 views
2

Quand un programme recevra-t-il une 'exception de mémoire insuffisante'. Est-ce lorsque vous n'avez pas assez d'adresses virtuelles ou parce que vous n'avez pas assez de mémoire physique? Selon ma compréhension, cela ne devrait se produire que s'il n'y a pas assez d'adresse virtuelle disponible, car le stockage physique peut être rendu disponible par pagination des sections inutilisées.Exception de mémoire insuffisante? pas assez d'adresse virtuelle: pas assez de mémoire physique

Veuillez clarifier.

Merci, Suresh.

+1

Voici un article qui explique en détails comment un espace d'adressage virtuel est disponible pour un programme: http://blogs.technet.com/b/markrussinovich/archive/2008/11/17/3155406.aspx –

Répondre

0

Lorsque vous manquez d'espace adressable pour le programme à accéder. Cela signifie normalement une plage d'adresses virtuelles, mais si vous avez suffisamment de RAM, ce sera la mémoire physique.

1

Mémoire totale disponible = physique (RAM) plus fichier (s) de page. Lorsque les deux sont pleins, vous obtenez l'exception sur toutes les demandes d'allocation de mémoire supplémentaires. Sur certains systèmes, cela est encore nuancé par le fait que le noyau réserve une partie de RAM physique pour lui-même, de sorte que les programmes en mode utilisateur sont en concurrence pour le reste.

+0

Steve - pas entièrement correct. S'il s'agit d'un système d'exploitation 32 bits, la quantité d'espace adressable peut être inférieure à la RAM installée. Si le processus atteint la limite de l'espace adressable, l'exception se produira. – Oded

2

Si vous voyez un OutOfMemoryException, il s'agit vraisemblablement d'une application .Net. Ironiquement, les conditions que vous décrivez sont à peu près jamais la source d'un OutOfMemoryException dans .Net.

Dans la plupart des cas, il est préférable de considérer un OutOfMemoryException comme OutOfSomeCriticalResourceButNotRAMIronicallyEnoughException. Ou pire: à titre d'exemple, .Net lance un OutOfMemoryException lorsque vous essayez d'ouvrir un fichier image invalide.

Questions connexes