Maison >développement back-end >Golang >Quelle quantité de mémoire une Go Map réserve-t-elle initialement ?
Quelle quantité de mémoire les cartes Go Maps réservent-elles ?
Dans Go, les cartes sont allouées dynamiquement, la capacité initiale restant non spécifiée. Cela signifie que l'allocation de mémoire est spécifique à l'implémentation. Pour déterminer l'allocation de mémoire initiale, consultez la structure interne de la carte.
Structure de la carte
Une carte se compose d'un en-tête (type hmap) et d'un tableau de buckets (type bmap). Lorsqu'il est créé sans capacité initiale, un seul bucket est alloué.
Structure et taille de l'en-tête
L'en-tête comprend :
La taille de int, uintptr et unsafe.Pointer est égal à la taille du mot (8 octets sur les machines 64 bits). Par conséquent, la taille de l'en-tête est de 40 octets.
Structure et taille du bucket
Chaque bucket contient un tableau de 8 * uint8. En ajoutant cela à la taille de l'en-tête, nous obtenons l'allocation de mémoire initiale totale :
Header Size (40 bytes) + Bucket Size (8 bytes) = **48 bytes (64-bit architecture)**
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!