초기 메모리 할당을 지정하지 않고 Go 맵을 생성할 때 실제 메모리 사용량은 미스터리로 남아 있습니다. 이 기사에서는 구현에 의해 할당된 메모리를 결정하는 방법에 대해 설명합니다.
Go 맵 유형의 소스 코드를 살펴보면 맵이 다음과 같이 구성되어 있음을 발견했습니다. 두 가지 구성 요소: 헤더(hmap)와 버킷 배열(bmap). 놀랍게도 맵 생성 중에 초기 할당이 지정되지 않은 경우 단일 버킷이 할당됩니다.
헤더는 7개의 필드로 구성됩니다.
64비트 시스템에서 int 크기, uintptr 및 unsafe.Pointer는 각각 8바이트이므로 총 40바이트가 됩니다. header.
버킷은 uint8 유형의 8개 요소로 구성된 배열이므로 8바이트가 추가됩니다.
따라서 버킷이 하나인 맵에 할당되는 메모리는 다음과 같습니다. of:
이 계산은 다음과 같습니다. 64비트 아키텍처에 적용 가능하며 실제 크기는 플랫폼에 따라 약간 다를 수 있습니다.
위 내용은 지정되지 않은 Go 맵은 얼마나 많은 메모리를 할당합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!