Qual é a forma mais adequada de utilizar MemoryMappedViewAccessors .NET 4.0 de?
-
11-09-2019 - |
Pergunta
Ao exibir um arquivo grande, memória mapeada em uma caixa de rolagem, é mais adequado para ter a vista representar o arquivo inteiro, ou apenas a região do arquivo atualmente sendo exibido?
De forma mais ampla, em que nível de abstração é paginação feito com arquivos de memória mapeada da Net? É o tamanho / quantidade do arquivo retido na memória relacionada com os MemoryMappedViewAccessors página, ou é independente destes objetos?
Solução
É independente; os dados não são copiados para a memória até que o endereço (ou o endereço de um próximo) é acessado. No entanto, o tamanho da visualização conta contra o espaço de endereço do seu processo. Isso é realmente importante em sistemas de 32 bits uma vez que o espaço de endereço processo é limitado a 2 GB ou 3 GB. Isso afeta a capacidade de fazer alocações futuras, devido à possibilidade de que um bloco contíguo do tamanho desejado pode não estar disponível no espaço de endereço.
A capacidade de usar grandes vistas é frequentemente citado como uma grande vantagem de sistemas de 64 bits.