Maison >développement back-end >Golang >Quelle quantité de mémoire une carte Go non spécifiée alloue-t-elle ?
Lors de la création d'une carte Go sans spécifier l'allocation de mémoire initiale, l'utilisation réelle de la mémoire reste un mystère. Cet article met en lumière comment déterminer la mémoire allouée par l'implémentation.
En fouillant dans le code source du type de carte Go, nous découvrons qu'une carte comprend deux composants : un en-tête (hmap) et un tableau de buckets (bmap). Remarquablement, un seul bucket est alloué si l'allocation initiale n'est pas spécifiée lors de la création de la carte.
L'en-tête se compose de sept champs :
Sur les machines 64 bits, la taille de int, uintptr et unsafe.Pointer font 8 octets chacun, ce qui donne un total de 40 octets pour l'en-tête.
Un bucket est un tableau avec huit éléments de type uint8, ce qui donne 8 octets supplémentaires.
Ainsi, la mémoire allouée pour une carte avec un bucket est constituée de :
Ce calcul est applicable aux architectures 64 bits, et la taille réelle peut varier légèrement selon les plates-formes.
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!