Heim >Backend-Entwicklung >Golang >Wie viel Speicher reserviert eine Go-Map zunächst?
Wie viel Speicher reservieren Go-Karten?
In Go werden Karten dynamisch zugewiesen, wobei die anfängliche Kapazität nicht angegeben wird. Dies bedeutet, dass die Speicherzuweisung implementierungsspezifisch ist. Um die anfängliche Speicherzuordnung zu bestimmen, konsultieren Sie die interne Struktur der Karte.
Kartenstruktur
Eine Karte besteht aus einem Header (Typ hmap) und einem Array von Buckets (Typ bmap). Bei der Erstellung ohne anfängliche Kapazität wird ein einzelner Bucket zugewiesen.
Struktur und Größe des Headers
Der Header besteht aus:
Die Größe von int, uintptr und unsafe.Pointer entspricht der Wortgröße (8 Bytes auf 64-Bit-Maschinen). Daher beträgt die Headergröße 40 Byte.
Bucket-Struktur und -Größe
Jeder Bucket enthält ein Array von 8 * uint8. Wenn wir dies zur Header-Größe addieren, erhalten wir die gesamte anfängliche Speicherzuordnung:
Header Size (40 bytes) + Bucket Size (8 bytes) = **48 bytes (64-bit architecture)**
Das obige ist der detaillierte Inhalt vonWie viel Speicher reserviert eine Go-Map zunächst?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!