파일 매핑 개체 닫기

프로세스가 파일 매핑 개체로 완료되면 각 파일 보기에 대해 UnmapViewOfFile 함수를 사용하여 주소 공간의 모든 파일 뷰를 삭제해야 합니다.

파일의 매핑된 뷰를 매핑 해제하면 프로세스의 주소 공간에서 뷰가 차지하는 범위가 무효화되고 범위를 다른 할당에 사용할 수 있게 됩니다. 프로세스의 작업 집합에 속한 매핑되지 않은 각 가상 페이지에 대한 작업 집합 항목을 제거하고 프로세스의 작업 집합 크기를 줄입니다. 또한 해당 실제 페이지의 공유 개수도 감소합니다.

매핑되지 않은 보기에서 수정된 페이지는 공유 수가 0에 도달할 때까지 디스크에 기록되지 않으며, 즉 페이지를 공유하는 모든 프로세스의 작업 집합에서 매핑을 해제하거나 트리밍할 때까지 디스크에 기록되지 않습니다. 그럼에도 불구하고 수정된 페이지는 디스크에 "지연"으로 기록됩니다. 즉, 수정 사항은 메모리에 캐시되고 나중에 디스크에 기록될 수 있습니다. 전원 오류 또는 시스템 충돌 시 데이터 손실 위험을 최소화하려면 애플리케이션은 FlushViewOfFile 함수를 사용하여 수정된 페이지를 명시적으로 플러시해야 합니다.

각 프로세스가 파일 매핑 개체 사용을 완료하고 모든 보기의 매핑을 해제한 경우 CloseHandle을 호출하여 파일 매핑 개체의 핸들과 디스크의 파일을 닫아야 합니다. CloseHandle에 대한 이러한 호출은 여전히 열려 있는 파일 뷰가 있는 경우에도 성공합니다. 그러나 파일 뷰를 매핑된 상태로 두면 메모리 누수가 발생합니다.