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.
- 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.
- 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.
Comentários
Postar um comentário