Heim > Backend-Entwicklung > Golang > Wie viel Speicher reserviert eine zunächst leere Go-Map?

Wie viel Speicher reserviert eine zunächst leere Go-Map?

Mary-Kate Olsen
Freigeben: 2024-12-24 19:31:15
Original
438 Leute haben es durchsucht

How Much Memory Does an Initially Empty Go Map Allocate?

Speicherzuweisung in Go Maps: Eine umsetzungsspezifische Untersuchung

In der Welt des Go-Mappings stellt die Speicherzuweisung ein Rätsel dar. Das Fehlen eines anfänglichen Kapazitätsparameters beim Initialisieren einer Karte lässt die Größe des zugewiesenen Speicherplatzes den Launen der Implementierung unterliegen. Aber wie können wir die Geheimnisse dieser versteckten Zuordnung lüften?

Ein Blick in die Tiefen des Go-Map-Quellcodes offenbart eine Struktur, die aus einem Header und einem Array von Buckets besteht. Bei nicht spezifiziertem Anfangsraum umfasst die Karte nur einen einzigen Bucket.

Der Header selbst ist ein wahres Labyrinth von Feldern:

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

Auf 64-Bit-Maschinen richtet sich die Größe von int, uintptr und unsafe.Pointer nach der Wortgröße (8 Bytes). Diese Zusammensetzung ergibt insgesamt 40 Bytes für den Header.

Nun richten wir unsere Aufmerksamkeit auf den Bucket, der ein Array von 8 uint8-Elementen enthält. Dies trägt weitere 8 Bytes zur Gesamtsumme bei.

Wenn wir diese Komponenten kombinieren, kommen wir auf eine Gesamtsumme von 48 Bytes (für 64-Bit-Architekturen). Mit diesem Wissen können wir getrost den Schleier der Unsicherheit über die Zuordnung des Kartenspeichers in Go durchdringen.

Das obige ist der detaillierte Inhalt vonWie viel Speicher reserviert eine zunächst leere Go-Map?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage