Pourquoi la taille de la mémoire de la pile est-elle si limitée ?
Lors de l'allocation de mémoire sur le tas, la seule contrainte est la disponibilité de la RAM libre. En revanche, la taille de la mémoire de pile allouée à un thread est généralement beaucoup plus restreinte, autour de 1 Mo. Cette limitation défie la question : pourquoi ne pouvons-nous pas créer des objets de taille arbitraire sur la pile ?
Contrainte technique : allocation continue de mémoire
La principale différence entre le tas et L'allocation de la mémoire de la pile réside dans la gestion. La pile doit être stockée dans des emplacements mémoire contigus, ce qui signifie qu'elle ne peut pas être allouée arbitrairement selon les besoins. Au lieu de cela, le système doit réserver des adresses virtuelles à cet effet.
Limite de création de threads
La taille de l'espace d'adressage virtuel réservé a un impact direct sur le nombre maximum de threads pouvant être créé. Par exemple, dans une application 32 bits avec un espace d'adressage virtuel de 2 Go, une pile de 2 Mo limite la limite de threads à 1 024 threads. Cette limite devient particulièrement limitante pour les applications telles que les serveurs Web.
Considérations sur les anciennes plates-formes 64 bits
Bien que les plates-formes 64 bits offrent un espace d'adressage virtuel beaucoup plus grand, la pile les limites de taille ont été conservées. Cela est probablement dû aux meilleures pratiques établies et à l’absence de besoin perçu de piles massives. Les développeurs sont encouragés à allouer des objets volumineux sur le tas et à ajuster manuellement la taille de la pile si cela est absolument nécessaire.
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!