문제

메모리 매핑 된 파일의 크기는 무엇입니까? 나는 그것이 할당되지 않은 주소 공간의 가장 큰 연속 덩어리보다 클 수 없으며 충분한 자유 디스크 공간이 있어야한다는 것을 알고 있습니다. 그러나 다른 한계가 있습니까?

도움이 되었습니까?

해결책

당신은 너무 보수적입니다 : 메모리 매핑 된 파일은 주소 공간보다 클 수 있습니다. 그만큼 보다 메모리 매핑 된 파일 중 OS 메모리 제약 조건으로 제한되지만 한 번에보고있는 파일의 일부일뿐입니다. (그리고 기술적으로 파일의 불연속 부분에 대한 여러 뷰를 한 번에 매핑 할 수 있다고 생각합니다. 따라서 오버 헤드 및 페이지 길이 제약 조건을 제외하고는 한계를 제한하는 바이트의 총 # 일뿐입니다. 바이트를 볼 수 있습니다. [0 ~ 1024] 및 바이트 [240 2까지40 + 1024] 두 개의 개별 뷰로.)

MS Windows에서는 MapViewoffile 기능. 효과적으로 64 비트 파일 오프셋과 32 비트 길이가 필요합니다.

다른 팁

Win32에서 메모리 매핑 된 파일을 사용할 때의 경험이었습니다.

전체 파일을 하나의 세그먼트에 맵핑하면 일반적으로 약 750MB에서 탭합니다. 더 큰 인접한 메모리 블록을 찾을 수 없기 때문입니다. 더 작은 세그먼트 (각각 100MB)로 분할하면 다른 실행중인 내용에 따라 약 1500MB-1800MB를 얻을 수 있습니다.

당신이 사용하는 경우 /3G 스위치 최대 약 2700MB 이상 2GB 이상을 얻을 수 있지만 OS 성능은 처벌됩니다.

나는 64 비트에 대해 확신하지 못한다. 나는 그것을 시도한 적이 없지만 최대 파일 크기는 당신이 가진 물리적 메모리의 양에 의해서만 제한된다고 가정한다.

다른 한계는 없어야합니다. 충분하지 않습니까? ;-)

Windows에서 : "파일보기의 크기는 보존되지 않은 가상 메모리의 가장 큰 연속 블록으로 제한됩니다. 이는 프로세스에서 이미 예약 된 가상 메모리를 최대 2GB 마이너스합니다."

에서 MDSN.

Linux/OSX/다른 것에 대해 잘 모르겠지만 아마도 주소 공간과 관련이있을 것입니다.

와 함께 퓨즈 Linux에서는 주문형 디스크로 확장되는 메모리 내 파일 시스템을 만들 수도 있습니다. 나는 메모리 매핑 된 자격이 있는지 확신하지 못하고 구별이 흐려집니다.

예, 메모리 매핑 된 파일에는 제한이 있습니다. 가장 놀랍게도 :

32 비트 시스템에서 메모리 매핑 파일은 2GB보다 클 수 없습니다.

MEMMAP으로 인해 파일 시스템의 현재 크기를 넘어 파일을 생성하거나 확장하면 새 부분의 내용은 지정되지 않습니다. Posix Filesystem Semantics가있는 시스템에서 확장 부품은 제로 바이트로 채워집니다.

64 비트, 32GB RAM 시스템에서도 바이트 오프셋을 사용하여 일부를 가져 오는 대신 큰 Numpy 메모리 매핑 파일을 읽으려고하면 다음 오류가 발생합니다.

Overflow Error: memory mapped size must be positive

큰 데이터 세트는 실제로 함께 일하는 고통입니다.

주제에 대한 Wikipedia 항목 :http://en.wikipedia.org/wiki/memory-mapped_file

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top