Les réponses qui disent que cela a à voir avec la RAM sont profondément erronées. Il est important de comprendre correctement la relation entre l'espace disque, la RAM et l'espace d'adressage.
Voici comment cela fonctionne réellement.
Chaque processus sous Windows 32 bits dispose d'un disque dur de 4 Go. espace adresse .
Sur ces 4 Go d'espace d'adressage, 2 Go sont réservés à l'usage du système d'exploitation et les 2 Go restants sont disponibles pour que le code utilisateur du processus puisse les utiliser comme bon lui semble.
Permettez-moi d'être extrêmement clair sur ce point : l'espace d'adressage n'est pas la mémoire . Un processus peut avoir autant mémoire comme il le souhaite. Je vais le répéter : un processus peut avoir bien plus que 4 Go de mémoire allouée . La limite est que seuls 2 Go de cette mémoire peuvent être mappés dans l'espace d'adressage du mode utilisateur à tout moment. .
Je n'ai pas mentionné la RAM parce que La RAM n'a rien à voir avec la question de l'espace d'adressage. . Il importe peu que le système d'exploitation stocke le mémoire du processus en RAM ou sur le disque ou autre. La RAM n'est qu'une optimisation des performances qui permet au système d'exploitation de stocker les données du processus. mémoire dans une puce rapide plutôt que dans un disque lent.
Votre processus indique au système d'exploitation la quantité de mémoire dont il a besoin et l'emplacement de cette mémoire dans l'espace d'adressage de 2 Go. Si le processus a besoin de plus de 2 Go de mémoire, il ne pourra pas la mapper entièrement dans l'espace d'adressage ; un tel processus doit soit être écrit de manière intelligente pour indiquer au système d'exploitation les pages de mémoire à mapper et à démapper de l'espace d'adressage, soit utiliser moins de mémoire. S'il ne le fait pas, il échouera avec une exception de mémoire insuffisante.
Une analogie pourrait peut-être vous aider. Votre immeuble dispose d'un parking d'une centaine de places. C'est de la RAM. Vous avez un parking en bas de la rue avec dix mille places. C'est le disque. Vous et tous les autres habitants de l'immeuble avez chacun un trousseau de clés pouvant contenir dix clés. C'est l'espace d'adressage par processus. Le fait que vous n'ayez de la place que pour dix clés signifie-t-il que vous ne pouvez posséder que dix voitures ? Non ! Vous pouvez posséder autant de voitures que vous voulez, mais si vous voulez accéder à onze de ces voitures, vous allez devoir retirer une des clés du trousseau, la ranger ailleurs, et mettre la nouvelle clé sur le trousseau. C'est le mappage de la mémoire dans et hors de l'espace d'adressage. .
Et si tous les habitants du bâtiment essayaient chacun de garer dix voitures en RAM ? Si le parking est plein, ils devront transférer certaines de ces voitures dans le parking en bas de la rue. Cela les empêche-t-il d'avoir des clés sur leur porte-clés ? Non, évidemment pas. Ça ralentit juste les choses quand ils veulent conduire une voiture qui est garée sur le disque.
Et s'il y avait un service de voiturier qui savait quelles voitures les gens étaient le plus susceptibles d'utiliser, et qui déplaçait les moins utilisées vers le parking en bas de la rue ? C'est le gestionnaire de mémoire qui met les pages de mémoire les moins utilisées dans le fichier d'échange.
Vous soulignez que vous avez un gros disque. Supposons que vous ayez un fichier de 10 Go sur ce disque. Vous pouvez certainement utiliser le contenu de ce fichier dans votre programme .NET, mais vous ne pouvez pas le charger en entier dans votre programme .NET. espace d'adressage contigu en même temps. Tu dois le lire par morceaux. Si tu étais intelligent, tu pourrais le mettre dans la mémoire du processus tout d'un coup vous avez plein de possibilités mémoire -- mais vous ne pouviez pas ensuite mettre en correspondance 10 Go de mémoire en 2 Go de espace adresse .
En général, il est plus facile de ne pas essayer d'obtenir autant de mémoire en premier lieu ; il suffit de lire quelques centaines de Ko à la fois.
Il est extrêmement courant que les gens confondent l'espace d'adressage avec la mémoire physique, mais ce n'est pas la même chose depuis des décennies. Pour plus de détails, voir mon article sur ce sujet, "Out Of Memory" ne fait pas référence à la mémoire physique .