Pular para o conteúdo principal

Como escolher entre JVM 32 ou 64bits ?

Olá Pessoal, hoje iremos falar um pouco sobre JVM, dando um foco nas diferenças sobre JVM de 32 e 64 bits.


O que é a JVM ?

Para quem é do mundo Java a JVM é um assunto conhecido, mas para quem esta vindo de outras plataformas pode ser um assunto novo e complexo, a JVM é uma máquina virtual responsável pela interpretação do bytecode (código compilado) e execução na máquina nativa.

Ao compilar um código Java, teremos como resultado o bytecode, este irá ser interpretado pela JVM, por esta razão é que o Java é independente de Plataforma, pois a JVM que garante a comunicação com a plataforma de execução.



Hoje temos inúmeras linguagens que rodam em cima da JVM, tais como: Kotlin, Groovy, Scala, entre outras, pois o compilador de cada uma dessas linguagens gera no final o bytecode que será interpretado pela JVM.



Utilizando a JVM 32 ou 64 bits

Os sistemas operacionais são projetados para fazer a integração entre os softwares e o hardware,  além de serem a interface homem x máquina que utilizamos no dia a dia, para isso, eles realizam todo o trabalho de comunicação entre os periféricos que compõem um determinado hardware.

A JVM é desenhada para cada sistema operacional e arquitetura, portanto, temos versões de JVM para cada sistema operacional e arquitetura (32 ou 64bits), com isso podemos ter uma base de código única que irá ser executada em JVMs especificas para cada S.O.


A arquitetura 32 ou 64 bits basicamente determina qual a capacidade(tamanho) e processamento de endereços de memória que aquele ambiente permite, para mais detalhes podemos consultar este post da UFRJ.

A escolha da JVM de 32 ou 64 bits pode ser feita levando em consideração alguns requisitos, lembrando que a aplicação é o ponto mais importante a ser analisado.

Arquitetura 32 bits

  • O S.O não suporta arquitetura 64bits;
  • Alocação máxima de 4GB de memória para Heap;
  • O Espaço de alocação de memória é menor, portanto, aplicações de ciclo de vida curto podem levar vantagens nesta arquitetura.
Aqui podemos listar alguns exemplos de aplicações que podem rodar em 32 bits:
  • Arquitetura Servless
    • neste tipo de Arquitetura a aplicação tem um ciclo de vida muito curto, onde acontece a alocação da Heap e logo após acontece o fim do processamento, não sendo necessário nem a execução do Garbage Collector;
  • Aplicação com uso de memória conhecido
    • Aplicações que devido de testes de stress e desempenho você saiba que o uso de memória é menor que 4GB;
  • Aplicações que usam de escalabilidade horizontal
    • Em cenários de escalabilidade horizontal onde as unidades de processamento aloquem menos que 4GB de Ram.
      • EX: Cluster Kubernetes onde os pods da aplicação possuem Resource Limit de até 4GB, e usam de estratégias de HPA.

Arquitetura 64 bits

  • O S.O deve ser compatível com a arquitetura 64bits;
  • Não há limite para o tamanho máximo de memória a ser alocada (Podem existir excessões);
  • Espaço maior para alocação de memória, portanto aplicações de ciclo de vida longo, podem executar melhor nesta arquitetura;
  • Uso de long e double são executados melhor nesta versão.
Aqui podemos listar alguns exemplos de aplicações que podem rodar em 64 bits:
  • Aplicações que alocam mais de 4GB de memória
    • Nestes casos temos que executar em JVMs de 64 bits devido a capacidade de alocação de memória junto do S.O;
  • Aplicações que processam algoritmos complexos
    • Nestes cenários o uso de long e double são constantes, portanto devido a seu design de alocação de 8 bytes, serão melhor processados em ambientes de 64 bits.

Conclusão

Nos dias atuais, com os modelos de arquitetura voltados para containers, Servless, entre outras, a escolha de qual JVM tornou-se menos relevante para a maioria das aplicações, isto porque questões de performance acabam sendo delegadas para outros pontos, tais como: estratégias de HPA, Escalabilidade Horizontal, etc.

Para ambiente críticos ou em cenários onde temos que extrair ao máximo a performance da aplicação ou usar os recursos com melhor eficiência, escolher a melhor versão de JVM é fundamental.

Referências

Comentários

Postagens mais visitadas do Blog