Pourquoi la taille de la pile en C# exactement 1 MO?

Les Ordinateurs d'aujourd'hui ont une grande quantité de RAM physique, mais encore, la taille de la pile de C# est à seulement 1 MO pour les processus 32 bits et 4 MO pour les processus 64 bits (Capacité d'empilage en C#).

Pourquoi la taille de la pile dans le CLR est toujours aussi limité?

Et pourquoi est-il exactement de 1 MO (4 MO) (et pas 2 MO ou 512 KO)? Pourquoi il a été décidé d'utiliser ces montants?

Je suis intéressé par considérations et les raisons derrière cette décision.

  • Par défaut la taille de la pile pour 64bit processus de 4MB, il est de 1 mo pour les 32 bits de processus. Vous pouvez modifier la taille de la pile des threads en modifiant la valeur dans son en-tête PE. Vous pouvez également spécifier la taille de la pile en utilisant le droit de surcharge de la Thread constructeur. MAIS, cela pose la question, pourquoi avez-vous besoin d'une plus grande pile?
  • Merci, édité. 🙂 La question n'est pas sur la façon d'utiliser la plus grande taille de la pile, mais pourquoi la taille de la pile est décidé à 1 MO (4 MO).
  • Parce que chaque thread va obtenir cette taille de pile par défaut, et la plupart des threads n'avez pas besoin de beaucoup plus. J'ai juste démarré mon PC et le système fonctionne actuellement, 1200 fils. Maintenant, faites le calcul 😉
  • Non seulement cela, il doit être contagieuse dans la mémoire. Remarque plus la taille de la pile, moins de threads de votre processus peut créer dans son espace d'adressage virtuel.