2011-07-30 3 views

답변

3

이 컨텍스트에서 "nominal"은 CLR이 값을 추적하는 데 사용하는 저장소를 제외하고 이러한 데이터 형식에 포함 된 실제 데이터가 차지하는 바이트 수를 의미합니다. 값 유형이 박스형 일 때 발생하는 힙 할당. 링크 된 기사를 읽고에

편집

, 나는 다음과 같은 부분을 발견 :

메모리 소비 당신은 기본 데이터 타입을 선언 할 때, 그것은에 안전하지

메모리 소비량이 공칭 스토리지 할당량과 같다고 가정합니다. 이는 다음과 같은 고려 사항 때문입니다.

스토리지 지정입니다. 공용 언어 런타임은 응용 프로그램이 실행되는 플랫폼의 현재 특성을 기반으로 저장소를 할당 할 수 있습니다. 메모리가 거의 가득 차 있다면 선언 된 요소를 최대한 가깝게 압축 할 수 있습니다. 다른 경우에는 성능을 최적화하기 위해 메모리 주소를 자연스러운 하드웨어 경계에 맞출 수 있습니다.

플랫폼 너비. 64 비트 플랫폼에서의 스토리지 할당은 32 비트 플랫폼에서의 할당과 다릅니다. 다시, 런타임의 재량에 -

그래서 기본적으로이 값 형식 당 전체 저장이 공칭 저장이 + 어떤 패딩 단어 경계 + 가능한 힙 할당에서 값을 정렬하는 데 사용 될 수 있음을 말하고있다.

2

"Nominal"은 런타임이 주어진 변수에 대해 의미있는만큼 많은 공간을 할당 할 수 있다는 사실을 나타냅니다. short는 데이터를 저장하기 위해 2 바이트 만 필요하지만 런타임은 변수에 4 바이트를 할당 할 수 있습니다. 예를 들어, 32 비트 컴퓨터의 레지스터에 저장된 short는 4 바이트를 "사용"합니다. 유사하게, 스택은 매개 변수로 short를 전달할 때 (예 : 단어 정렬을 유지하기 위해) 4 바이트의 스택 공간이 사용된다는 점에서 동일한 방식으로 작동합니다. 일반적으로 메모리가 자연 단어 경계에 정렬되면 메모리 액세스가 더 빠르기 때문에 런타임은 메모리를 정렬하기 위해 공간을 "낭비 할"수 있습니다. 64 비트 시스템에서 동일한 시나리오는 각각 8 바이트를 사용합니다.