qual é o número sugerido de bytes de cada vez para arquivos muito grandes sejam mapeadas em memória de uma só vez?

StackOverflow https://stackoverflow.com/questions/1031073

  •  06-07-2019
  •  | 
  •  

Pergunta

Estou abrindo arquivos usando o mapa de memória. Os arquivos são aparentemente muito grande (6 GB em um 32-bit PC) para ser mapeado em um atrás. Então, eu estou pensando em parte mapeamento de la cada vez e ajustando os deslocamentos na próxima mapeamento.

Existe um número óptimo de bytes para cada mapeamento ou se existe uma maneira de determinar uma tal figura?

Graças.

Foi útil?

Solução

Não há tamanho ideal. Com um processo de 32 bits, não só é 4 GB de endereço de espaço total, e normalmente apenas dois GB está disponível para os processos de modo utilizador. Este GB 2 é então fragmentado por código e de dados provenientes do exe e DLL, alocações de pilha, pilhas de rosca, e assim por diante. Diante disso, você provavelmente não vai encontrar mais de 1 GB de espaço contigous para mapear um arquivo na memória.

O número ideal depende do seu aplicativo, mas eu ficaria preocupado mapeamento mais de 512 MB em um processo de 32 bits. Mesmo com limitando-se a 512 MB, você pode executar em algumas questões, dependendo da sua aplicação. Alternativamente, se você pode ir de 64 bits não deve haver problemas de mapeamento vários gigabytes de um arquivo para a memória - você endereço espaço é tão grande isso não deve causar quaisquer problemas

.

Você pode usar uma API como VirtualQuery para encontrar o maior espaço contigous -. Mas então a sua realmente forçando erros de memória para ocorrer como você está removendo grandes quantidades de espaço de endereço

EDIT: Eu só percebi que a minha resposta é específico do Windows, mas não o fez qual plataforma você está discutindo. Eu presumo que outras plataformas têm fatores limitantes semelhantes para arquivos mapeados na memória.

Outras dicas

Será que a necessidade de arquivo para ser memória mapeada?

Eu editei arquivos de vídeo 8GB em um 733MHz PIII (não é agradável, mas factível).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top