다음을 통해 공유


낮은 조각화 힙

[이 항목의 정보는 Windows Server 2003 및 Windows XP에 적용됩니다. Windows Vista부터 시스템은 메모리 할당 요청을 처리하는 데 필요에 따라 LFH(하위 조각화 힙)를 사용합니다. 애플리케이션은 힙에 대해 LFH를 사용하도록 설정할 필요가 없습니다.]

힙 조각화는 사용 가능한 메모리가 인접하지 않은 작은 블록으로 분할되는 상태입니다. 힙이 조각화되면 단일 메모리 블록이 충분히 크지 않으므로 힙에서 사용 가능한 총 메모리가 요청을 충족하기에 충분한 경우에도 메모리 할당이 실패할 수 있습니다. LFH(하위 조각화 힙)는 힙 조각화를 줄이는 데 도움이 됩니다.

LFH는 별도의 힙이 아닙니다. 대신 애플리케이션이 해당 힙에 대해 사용하도록 설정할 수 있는 정책입니다. LFH를 사용하도록 설정하면 시스템은 미리 결정된 특정 크기의 메모리를 할당합니다. 애플리케이션이 LFH를 사용하도록 설정된 힙에서 메모리 할당을 요청하면 시스템은 요청된 크기를 포함할 수 있을 만큼 큰 가장 작은 메모리 블록을 할당합니다. 현재 구현에서 시스템은 LFH를 사용하도록 설정했는지 여부에 관계없이 약 16KB보다 큰 할당에 LFH를 사용하지 않습니다.

애플리케이션은 호출 프로세스의 기본 힙 또는 애플리케이션이 만든 프라이빗 힙 에 대해서만 LFH를 사용하도록 설정해야 합니다. 힙에 대해 LFH를 사용하도록 설정하려면 GetProcessHeap 함수를 사용하여 호출 프로세스의 기본 힙에 대한 핸들을 가져오거나 HeapCreate 함수에서 만든 프라이빗 힙에 대한 핸들을 사용합니다. 그런 다음 핸들을 사용하여 HeapSetInformation 함수를 호출합니다.

HEAP_NO_SERIALIZE 사용하여 만든 힙 또는 고정 크기로 만든 힙에는 LFH를 사용하도록 설정할 수 없습니다. Windows용 디버깅 도구 또는 애플리케이션 검증 도구에서 힙 디버깅 도구를 사용하는 경우에도 LFH를 사용하도록 설정할 수 없습니다.

힙에 대해 LFH를 사용하도록 설정한 후에는 사용하지 않도록 설정할 수 없습니다.

LFH에서 가장 많은 이점을 제공하는 애플리케이션은 메모리를 자주 할당하고 16KB 미만의 다양한 할당 크기를 편안하게 사용하는 다중 스레드 애플리케이션입니다. 그러나 모든 애플리케이션이 LFH의 이점을 누릴 수 있는 것은 아닙니다. 애플리케이션에서 LFH를 사용하도록 설정하는 효과를 평가하려면 성능 프로파일링 데이터를 사용합니다.