10 Coisas Para Saber Sobre Memoria Mapeado Arquivo Em Java




10 Coisas Para Saber Sobre Memória Mapeado Arquivo Em Java10 coisas para saber sobre memoria mapeado arquivo em Java

Memoria Mapeada IO e uma das mais rapidas opcoes de E / S disponiveis para o programa Java. Se voce estiver escrevendo latencia sensivel aplicacao, onde IO pode desviar seus numeros, entao usando MemoryMappedByteBuffer e uma boa opcao.

10 Coisas Para Saber Sobre Memória Mapeado Arquivo Em JavaO que e Memory Mapped File e IO em Java

10 Coisas Para Saber Sobre Memória Mapeado Arquivo Em JavaArquivos mapeados memoria sao especiais, o que permite que o programa Java para acessar o conteudo diretamente da memoria, isso e conseguido por mapeamento de arquivo inteiro ou porcao de arquivo na memoria e sistema operacional cuida da pagina de carregamento solicitada e escrevendo em arquivo enquanto a aplicacao so lida com memoria que Resulta em operacoes IO muito rapidas. Memoria usada para carregar O arquivo mapeado de memoria esta fora do espaco de heap Java. A linguagem de programacao Java suporta memoria mapeada arquivo com o pacote java. nio e tem MappedByteBuffer para ler e gravar a partir da memoria.

Vantagem e desvantagem de memoria mapeado arquivo

Possivelmente a principal vantagem da memoria mapeada IO e o desempenho que e importante para construir sistema de comercio eletronico de alta frequencia. Memory Mapped Os arquivos sao muito mais rapidos do que o acesso a arquivos padrao via IO normal. Outra grande vantagem da memoria mapeada IO e que ele permite que voce carregar um arquivo potencialmente maior que nao e de outra forma acessivel. Experimentos mostram que memoria mapeada IO executa melhor com arquivos grandes. Embora tenha uma desvantagem em termos de aumento do numero de falhas de pagina. Como o sistema operacional so carrega uma parte do arquivo na memoria se uma pagina solicitada nao estiver presente na memoria, isso resultaria na falha de pagina. Ele tambem pode ser usado para compartilhar dados entre dois processos.

Suporte de E / S de memoria mapeada no sistema operacional

A maioria dos principais sistemas operacionais como a plataforma Windows, UNIX, Solaris e outros sistemas operacionais UNIX suporta memoria IO mapeada e com arquitetura de 64 bits voce pode mapear quase qualquer arquivo na memoria e acessa-lo diretamente usando a linguagem de programacao Java.

Importantes Pontos de Memoria Mapeados IO em Java

Aqui estao alguns dos fatos importantes a serem conhecidos sobre o Memory Mapped File em Java:

Java suporta memoria mapeada IO com java. nio pacote.

Arquivos mapeados em memoria sao usados ??em aplicativos sensiveis ao desempenho. por exemplo. Plataformas de negociacao electronica de alta frequencia.

Usando memoria mapeada IO, voce pode carregar parte de arquivos grandes na memoria.

Memoria mapeada arquivo pode resultar em falha de pagina se solicitado pagina nao esta na memoria.

A capacidade de mapear uma regiao do arquivo na memoria depende do tamanho enderecavel da memoria. Em uma maquina de 32 bits, voce nao pode acessar alem de 4GB ou 2 ^ 32.

A memoria mapeada IO e muito mais rapida do que a Stream IO em Java.

Memoria usada para carregar O arquivo esta fora do heap Java e reside na memoria compartilhada que permite que dois processos diferentes acessem o arquivo.

Leitura e escrita em memoria mapeado arquivo e feito pelo sistema operacional, por isso, mesmo se o seu programa Java trava depois de colocar o conteudo na memoria, ele fara a arquivo ate que o sistema operacional esta bem.

Prefere o buffer de Byte direto sobre o buffer nao-direto para um desempenho mais rapido.

Don39; t chamada MappedByteBuffer. force () metodo com demasiada frequencia, este metodo destina-se a forcar o sistema operacional para escrever o conteudo da memoria no disco, entao se voce chamar force () metodo cada vez que voce escreve na memoria mapeado arquivo, voce nao vera Verdadeiro beneficio do uso de buffer de bytes mapeados, em vez disso, sera semelhante ao IO de disco.

Em caso de falha de energia ou falha do host, ha uma pequena chance de que o conteudo do arquivo mapeado de memoria nao esteja gravado no disco, o que significa que voce pode perder dados criticos.

Isso e tudo pessoal. A memoria mapeada IO e um conceito importante para desenvolvedores Java avancados, especialmente para escrever aplicativos de alto desempenho em Java. Se voce gosta desta dica, entao voce pode gostar de visitar o meu blog javarevisited. blogspot para obter mais dicas.