Isso está realmente vinculado ao HotSpot e aos valores das opções padrão ( Java HotSpot VM Options ) que diferem entre a configuração do cliente e do servidor.
No capítulo 2 do whitepaper ( A arquitetura do Java HotSpot Performance Engine ):
O JDK inclui dois tipos de VM - uma oferta do lado do cliente e uma VM ajustada para aplicativos de servidor. Essas duas soluções compartilham a base de código do ambiente de tempo de execução do Java HotSpot, mas usam compiladores diferentes adequados às características de desempenho distintamente exclusivas de clientes e servidores. Essas diferenças incluem a diretiva de compilação e os padrões de heap.
Embora as VMs do servidor e do cliente sejam semelhantes, a VM do servidor foi ajustada especialmente para maximizar a velocidade operacional máxima. Ele se destina à execução de aplicativos de servidor de longa execução, que precisam da velocidade operacional mais rápida possível, mais do que um tempo de inicialização rápido ou menor espaço na memória de tempo de execução.
O compilador Client VM serve como um upgrade para os compiladores Classic VM e just-in-time (JIT) usados pelas versões anteriores do JDK. A VM do cliente oferece desempenho aprimorado do tempo de execução para aplicativos e applets. A VM do cliente Java HotSpot foi ajustada especialmente para reduzir o tempo de inicialização do aplicativo e o espaço ocupado pela memória, tornando-o particularmente adequado para ambientes do cliente. Em geral, o sistema do cliente é melhor para GUIs.
Portanto, a diferença real também está no nível do compilador:
O compilador da VM do cliente não tenta executar muitas das otimizações mais complexas executadas pelo compilador na VM do servidor, mas, em troca, requer menos tempo para analisar e compilar um trecho de código. Isso significa que a VM do cliente pode ser inicializada mais rapidamente e requer um espaço menor de memória.
A VM do servidor contém um compilador adaptativo avançado que suporta muitos dos mesmos tipos de otimizações executadas pela otimização de compiladores C ++, além de algumas otimizações que não podem ser feitas pelos compiladores tradicionais, como o alinhamento agressivo através de invocações de métodos virtuais. Essa é uma vantagem competitiva e de desempenho sobre os compiladores estáticos. A tecnologia de otimização adaptativa é muito flexível em sua abordagem e geralmente supera até as técnicas avançadas de análise e compilação estáticas.
Nota: O lançamento da atualização 10 do jdk6 (consulte as Notas da versão de atualização: alterações em 1.6.0_10 ) tentou melhorar o tempo de inicialização, mas por um motivo diferente das opções do ponto de acesso, sendo empacotado de maneira diferente com um kernel muito menor.
G. Demecki ressalta nos comentários que nas versões de 64 bits do JDK, a -client
opção é ignorada por muitos anos.
Consulte o java
comando do Windows :
-client
Seleciona a VM Java HotSpot Client.
Um JDK com capacidade para 64 bits atualmente ignora essa opção e, em vez disso, usa a VM do Java Hotspot Server .