Maison >développement back-end >C++ >Pourquoi la taille de la mémoire de pile est-elle généralement limitée à environ 1 Mo, malgré la disponibilité théorique de la RAM pour la mémoire tas ?
Question :
Bien que la mémoire tas puisse théoriquement être allouée jusqu'à la RAM disponible, pourquoi la taille de la mémoire de la pile est-elle si limitée, généralement autour de 1 Mo ?
Réponse :
Contrairement au tas, qui peut être alloué de manière aléatoire, la pile doit être stockée dans des emplacements contigus emplacements mémoire. Cela signifie qu'une grande partie de l'espace d'adressage virtuel doit être réservée à la pile, même si elle n'est pas immédiatement utilisée.
Par exemple, dans une application 32 bits avec un espace d'adressage virtuel de 2 Go, une pile de 2 Mo size limite le nombre maximum de threads à 1 024. Augmenter la taille de la pile à 100 Mo réduirait encore la limite de threads à environ 20. Cela peut être problématique pour les applications telles que les serveurs Web et les programmes GUI.
Fait intéressant, cette limitation également persiste sur les plates-formes 64 bits. Bien que les raisons techniques ne soient pas claires, on suppose que les développeurs se sont habitués aux meilleures pratiques en matière de pile, comme éviter d'énormes allocations d'objets sur la pile et ajuster manuellement la taille de la pile si nécessaire. Par conséquent, la nécessité d'une prise en charge « énorme » de la pile sur les systèmes 64 bits reste inexplorée.
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!