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

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

Patricia Arquette
Freigeben: 2024-12-18 19:13:14
Original
483 Leute haben es durchsucht

How Much Memory Does a Go Map Initially Reserve?

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:

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

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)**
Nach dem Login kopieren

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!

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