Comment puis-je augmenter la taille du tas .NET?
Est-il quelque chose dans .NET qui correspond à java -Xmx
la taille de la mémoire allocation?
Double Possible de puis-je (et je ne veux plus jamais) définir la taille maximale du tas .net?
OriginalL'auteur Ahmed Mounir | 2009-03-18
Vous devez vous connecter pour publier un commentaire.
Ce fil ressemble exactement à ce que vous êtes désireux.
Si je suis en train de lire le titre de MVP de la post correctement, sur un système 32 bits, vous êtes limité à 1,5 GO taille de tas de n'importe quoi, de qui vous obtenez tous dès que le processus commence. Sur un système 64 bits votre tas est essentiellement illimité, je ne pense pas que tout intégrer serveur ou un PC peut contenir autant de mémoire physique comme un processus 64 bits peuvent adresser.
Assurez-vous de construire votre assemblée à x 64 ou n'Importe quel CPU! Si vous construisez pour x86 alors, même sur un système d'exploitation x64/Matériel, vous aurez l'1,5 GO de limite.
Je pense que l'OP se demande comment limiter le tas de .Net application pour l'utilisation de 256 mo. Il demande si il y a un argument de configuration//variable d'environnement qui le fera, pas nécessairement seulement d'augmenter le tas.
OriginalL'auteur Dave Swersky
Autant que je l'ai trouvé, il n'y a pas de moyen simple de contrôler la taille du segment de mémoire de une .Net application à l'aide de la CLR.
Le lien de @Dave ne répondre qu'à la moitié de la réponse à la question. Quand j'ai recherché cette même question, la réponse est "Le tas pousse à utiliser toute la mémoire disponible", comme si c'est la seule raison pour laquelle vous voulez contrôler le max de la taille du segment.
(Habituellement Java) les environnements de serveur, vous ne voulez pas un mauvais fonctionnement d'application de porc de la mémoire au détriment d'autres applications hébergées. Une solution simple consiste à limiter la quantité de mémoire que l'application peut utiliser pour cela des tas de. Ceci est accompli avec de Java -Xmx argument de sorte que vous pouvez garantir l'application ne pas utiliser plus que ce qui est prévu, par exemple -Xmx256M. Depuis allouer de la mémoire sur le tas au cours de l'initialisation peut ralentir les applications de démarrage, Java utilise l'-Xms arg pour permettre à des applications qui fais beaucoup de création de l'objet lors de l'initialisation de commencer avec un gros bloc de mémoire au lieu de la JVM de l'ensemble de redimensionnement le tas comme il va.
.Net CLR n'ont pas cette capacité. Je soupçonne que c'est parce que .Net CLR n'est pas une machine virtuelle. Le CLR arrive à être une API (tout à fait complet, je pourrais ajouter) qui sert de carte de maternelle .dll qui correspond à une approche beaucoup plus comme un exécutable quand il s'agit de la gestion de la mémoire.
J'ai posé cette question sur le développement SharePoint et n'entendre qu'il pourrait être possible de contrôler la heapsize grâce à l'utilisation de modules IIS Web Apps, qui permet de dire IIS pour limiter la mémoire d'une application web. Je me demande si c'est parce que IIS a personnalisé des routines qui remplacer/remplacer new()/malloc()/etc et peut donc fournir ce type de contrôle pour applications client. Cela signifie que de manière autonome .Net applications sont hors de la chance, sauf si vous voulez écrire un personnalisé du gestionnaire de mémoire en C++ et de créer une interface pour .Net
La ligne de fond est que un CLR programme utilise toute la mémoire des politiques de gestion/contrôle le processus d'hébergement met en place. C'est pourquoi vous devez contrôler votre utilisation de la mémoire en C# d'un page web dans IIS, IIS est en fait un processus hôte qui fournit de l'environnement pour le CLR code à exécuter.
OriginalL'auteur Kelly S. French
Avoir un oeil sur ce thread:Taille maximale du Tas seule solution est de plugin plus de mémoire.
OriginalL'auteur weismat