Maison >développement back-end >C++ >Pourquoi mon application .NET 64 bits génère-t-elle une exception OutOfMemoryException malgré 16 Go de RAM ?

Pourquoi mon application .NET 64 bits génère-t-elle une exception OutOfMemoryException malgré 16 Go de RAM ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-04 01:39:39786parcourir

Why Does My 64-Bit .NET App Throw an OutOfMemoryException Despite Having 16GB of RAM?

OutOfMemoryException dans .NET : utilisation de la mémoire dépassant 1,3 Go sur une machine 64 bits

Malgré l'installation de 16 Go de RAM sur un ordinateur 64 bits , une application rencontre une exception OutOfMemory après avoir consommé environ 1,3 Go de mémoire. Ce problème persiste malgré l'absence d'objet unique dépassant 2 Go.

La cause réside dans l'architecture cible de la compilation. Par défaut, les applications .NET sont compilées pour une architecture 32 bits, ce qui impose une limite de 2 Go d'utilisation de la mémoire par objet. Même sur une machine 64 bits, la compilation pour 32 bits limite dans la même mesure l'utilisation de la mémoire.

Solution :

Pour résoudre le problème, recompilez le ciblage de l'application. Architecture 64 bits. Cela permettra à l'application d'utiliser la totalité des 16 Go de RAM disponibles sur le système. Après la recompilation, le binaire s'exécutera exclusivement sur les machines 64 bits.

De plus, il est crucial de noter que l'exception OutOfMemoryException peut également se produire si une seule collection dans le CLR (par exemple, List) alloue 2 Go de mémoire sur les architectures 32 bits et 64 bits.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn