Saturday, 18 November 2017

10 coisas para saber sobre memória mapeado arquivo em java


10 coisas para saber sobre memória mapeado arquivo em Java


Memória Mapeada IO é uma das mais rápidas opções de E / S disponíveis para o programa Java. Se você estiver escrevendo latência sensível aplicação, onde IO pode desviar seus números, então usando MemoryMappedByteBuffer é uma boa opção.


O que é Memory Mapped File e IO em Java


Arquivos mapeados memória são especiais, o que permite que o programa Java para acessar o conteúdo diretamente da memória, isso é conseguido por mapeamento de arquivo inteiro ou porção de arquivo na memória e sistema operacional cuida da página de carregamento solicitada e escrevendo em arquivo enquanto a aplicação só lida com memória que Resulta em operações IO muito rápidas. Memória usada para carregar O arquivo mapeado de memória está fora do espaço de heap Java. A linguagem de programação Java suporta memória mapeada arquivo com o pacote java. nio e tem MappedByteBuffer para ler e gravar a partir da memória.


Vantagem e desvantagem de memória mapeado arquivo


Possivelmente a principal vantagem da memória mapeada IO é o desempenho que é importante para construir sistema de comércio eletrônico de alta freqüência. Memory Mapped Os arquivos são muito mais rápidos do que o acesso a arquivos padrão via IO normal. Outra grande vantagem da memória mapeada IO é que ele permite que você carregar um arquivo potencialmente maior que não é de outra forma acessível. Experimentos mostram que memória mapeada IO executa melhor com arquivos grandes. Embora tenha uma desvantagem em termos de aumento do número de falhas de página. Como o sistema operacional só carrega uma parte do arquivo na memória se uma página solicitada não estiver presente na memória, isso resultaria na falha de página. Ele também pode ser usado para compartilhar dados entre dois processos.


Suporte de E / S de memória mapeada no sistema operacional


A maioria dos principais sistemas operacionais como a plataforma Windows, UNIX, Solaris e outros sistemas operacionais UNIX suporta memória IO mapeada e com arquitetura de 64 bits você pode mapear quase qualquer arquivo na memória e acessá-lo diretamente usando a linguagem de programação Java.


Importantes Pontos de Memória Mapeados IO em Java


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


Java suporta memória mapeada IO com java. nio pacote.


Arquivos mapeados em memória são usados ​​em aplicativos sensíveis ao desempenho. por exemplo. Plataformas de negociação electrónica de alta frequência.


Usando memória mapeada IO, você pode carregar parte de arquivos grandes na memória.


Memória mapeada arquivo pode resultar em falha de página se solicitado página não está na memória.


A capacidade de mapear uma região do arquivo na memória depende do tamanho endereçável da memória. Em uma máquina de 32 bits, você não pode acessar além de 4GB ou 2 ^ 32.


A memória mapeada IO é muito mais rápida do que a Stream IO em Java.


Memória usada para carregar O arquivo está fora do heap Java e reside na memória compartilhada que permite que dois processos diferentes acessem o arquivo.


Leitura e escrita em memória mapeado arquivo é feito pelo sistema operacional, por isso, mesmo se o seu programa Java trava depois de colocar o conteúdo na memória, ele fará a arquivo até que o sistema operacional está bem.


Prefere o buffer de Byte direto sobre o buffer não-direto para um desempenho mais rápido.


Don39; t chamada MappedByteBuffer. force () método com demasiada frequência, este método destina-se a forçar o sistema operacional para escrever o conteúdo da memória no disco, então se você chamar force () método cada vez que você escreve na memória mapeado arquivo, você não verá Verdadeiro benefício do uso de buffer de bytes mapeados, em vez disso, será semelhante ao IO de disco.


Em caso de falha de energia ou falha do host, há uma pequena chance de que o conteúdo do arquivo mapeado de memória não esteja gravado no disco, o que significa que você pode perder dados críticos.


Isso é tudo pessoal. A memória mapeada IO é um conceito importante para desenvolvedores Java avançados, especialmente para escrever aplicativos de alto desempenho em Java. Se você gosta desta dica, então você pode gostar de visitar o meu blog javarevisited. blogspot para obter mais dicas.

No comments:

Post a Comment