Rumah > pembangunan bahagian belakang > Golang > Berapa Banyak Memori yang Digunakan oleh Peta Go yang Baru Dicipta?

Berapa Banyak Memori yang Digunakan oleh Peta Go yang Baru Dicipta?

Linda Hamilton
Lepaskan: 2024-12-06 04:36:19
asal
679 orang telah melayarinya

How Much Memory Does a Newly Created Go Map Consume?

Menganggarkan Memori Terpelihara untuk Peta Go

Apabila bekerja dengan peta Go, selalunya berguna untuk mempunyai anggaran memori yang mereka gunakan. Walaupun dokumentasi menyatakan bahawa peruntukan memori awal adalah bergantung kepada pelaksanaan, berikut ialah menyelam lebih mendalam tentang cara anda boleh menentukan perkara ini:

Memeriksa Kod Sumber Peta

Peta Go dibina berdasarkan dua jenis: hmap (pengepala) dan bmap (tatasusunan baldi). Meneliti kod sumber mendedahkan bahawa apabila tiada ruang awal ditentukan (foo := make(map[string]int)), hanya satu baldi dibuat dalam peta.

Pecahan Pengepala Peta

Pengepala peta itu sendiri mengandungi beberapa medan:

  1. int (saiz bmap tatasusunan)
  2. uint8 (kiraan baldi)
  3. uint16 (kiraan baldi limpahan)
  4. uint32 (ambang minimum sebelum mengembangkan peta)
  5. Dua penunjuk tidak selamat ( untuk elemen dan kekunci penunjuk)
  6. uintptr (tidak digunakan medan)

Dengan mengandaikan seni bina 64-bit, saiz int, uintptr dan tidak selamat. Penunjuk ialah 8 bait setiap satu. Ini memberi kita saiz pengepala:

1 * 8 + 1 * 1 + 1 * 2 + 1 * 4 + 2 * 8 + 1 * 8 = 40 bytes
Salin selepas log masuk

Struktur Baldi

Setiap baldi dalam peta ialah tatasusunan lapan nilai uint8, yang menambahkan 8 bait tambahan:

8 * 1 = 8 bytes
Salin selepas log masuk

Jumlah Penggunaan Memori

Menambahkan saiz pengepala dan baldi, kita mendapat jumlah penggunaan memori sebanyak:

40 + 8 = 48 bytes (64-bit architecture)
Salin selepas log masuk

Anggaran ini boleh digunakan untuk menganggarkan penggunaan memori bagi peta Go yang baru dibuat tanpa ruang awal yang ditentukan.

Atas ialah kandungan terperinci Berapa Banyak Memori yang Digunakan oleh Peta Go yang Baru Dicipta?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan