Maison >développement back-end >Golang >Quelle quantité de mémoire une carte Go initialement vide alloue-t-elle ?

Quelle quantité de mémoire une carte Go initialement vide alloue-t-elle ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-24 19:31:15407parcourir

How Much Memory Does an Initially Empty Go Map Allocate?

Allocation de mémoire dans Go Maps : une enquête spécifique à l'implémentation

Dans le monde de la cartographie Go, l'allocation de mémoire présente une énigme. L'absence d'un paramètre de capacité initial lors de l'initialisation d'une carte laisse la taille de l'espace alloué soumise aux caprices de l'implémentation. Mais comment dévoiler les secrets de cette allocation cachée ?

Plonger dans les profondeurs du code source de la carte Go révèle une structure composée d'un en-tête et d'un tableau de buckets. Dans le cas d'un espace initial non précisé, la carte ne comporte qu'un seul bucket.

L'en-tête lui-même est un véritable labyrinthe de champs :

  • 1 int
  • 1 uint8
  • 1 uint16
  • 1 uint32
  • 2 unsafe.Pointer
  • 1 uintptr

Sur les machines 64 bits, la taille de int, uintptr et unsafe.Pointer s'aligne sur la taille du mot (8 octets). Cette composition donne un total de 40 octets pour l'en-tête.

Maintenant, tournons notre attention vers le bucket, qui héberge un tableau de 8 éléments uint8. Cela contribue à 8 octets supplémentaires au décompte global.

En combinant ces composants, nous arrivons à un total général de 48 octets (pour les architectures 64 bits). Forts de ces connaissances, nous pouvons percer en toute confiance le voile d’incertitude entourant l’allocation de mémoire cartographique dans Go.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn