ホームページ > バックエンド開発 > Golang > Go マップは最初にどれくらいのメモリを予約しますか?

Go マップは最初にどれくらいのメモリを予約しますか?

Patricia Arquette
リリース: 2024-12-18 19:13:14
オリジナル
507 人が閲覧しました

How Much Memory Does a Go Map Initially Reserve?

Go マップはどのくらいのメモリを確保しますか?

Go では、マップは動的に割り当てられ、初期容量は未指定のままです。これは、メモリ割り当てが実装固有であることを意味します。初期メモリ割り当てを決定するには、マップの内部構造を調べます。

マップ構造

マップは、ヘッダー (hmap 型) とバケットの配列 (hmap 型) で構成されます。 bマップ)。初期容量なしで作成された場合、単一のバケットが割り当てられます。

ヘッダーの構造とサイズ

ヘッダーは以下で構成されます:

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

int、uintptr、および unsafe.Pointer のサイズワード サイズ (64 ビット マシンでは 8 バイト) と同じです。したがって、ヘッダー サイズは 40 バイトです。

バケットの構造とサイズ

各バケットには 8 * uint8 の配列が含まれます。これをヘッダー サイズに追加すると、合計の初期メモリ割り当てが得られます:

Header Size (40 bytes) + Bucket Size (8 bytes) = **48 bytes (64-bit architecture)**
ログイン後にコピー

以上がGo マップは最初にどれくらいのメモリを予約しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート