resumo sobre as duas VMs do Java : Server & Client
--------------------------------------------------------------------de mim mesmo----------------------------------------------------------------------- Atualmente, apenas 64 bits suporta o modo servidor
VMs de servidor iniciam cerca de 10% mais devagar que as VMs de clientes.Roda pelo menos 10 vezes mais rápido que a VM do cliente; Como a CPU, a memória e o disco rígido do servidor são mais potentes que a máquina cliente, após o programa ser implantado, ele deve ser iniciado no modo servidor para obter melhor desempenho. A JVM padrão é 1M no modo cliente e 64M para -Xmx. A JVM é padrão para 128M no modo Servidor e 1024M para -Xmx.
server:启动慢,编译更完全,编译器是自适应编译器,效率高,针对服务端应用优化,在服务器环境中最大化程序执行速度而设计。
client:快速启动,内存占用少,编译快,针对桌面应用程序优化,为在客户端环境中减少启动时间而优化; Sobre GC: No modo clien, a nova geração escolhe o GC serial, e a geração antiga escolhe o GC serial No modo servidor, a nova geração escolhe a GC de reciclagem paralela, e a geração antiga escolhe GC paralela De modo geral, existem duas maneiras de escolher nossa aplicação do sistema: prioridade de throughput e prioridade de tempo de pausa, o modo padrão paralelo GC do servidor é usado para a prioridade de throughput, e o modo GC concorrente (CMS) é selecionado para a prioridade de tempo de pausa.
--------------------------------------------------------------------do navegador------------------------------------------------------------------------- O JDK possui dois tipos de VMs: clientes de VM e aplicações de servidor de VM. As duas soluções compartilham a base de código hotspot do runtime Java, mas usam compiladores diferentes para características únicas de desempenho tanto para o cliente quanto para o servidor, e essas diferenças incluem a criação de políticas inline e padrões de heap.
Embora servidores e VMs de clientes sejam semelhantes, as VMs de servidor foram especificamente ajustadas para atingir velocidades de operação máximas de pico. Ele é projetado para executar aplicações servidor de longa duração que exigem a maior velocidade de execução além de um tempo de inicialização rápido ou de um pequeno espaço de memória em tempo de execução.
O Compilador de VM do Cliente é um compilador usado por máquinas virtuais clássicas e atualizações em tempo real (JIT) através de versões anteriores do JDK. Máquinas virtuais cliente oferecem desempenho aprimorado para execução de aplicações e applets. Os clientes hotspot das Máquinas Virtuais Java foram especialmente ajustados para reduzir o tempo de inicialização e a pegada de memória dos aplicativos, tornando-os particularmente adequados para ambientes de clientes. Em geral, o sistema cliente possui uma interface gráfica melhor.
Então, a verdadeira diferença também está no nível do compilador:
O compilador da máquina virtual cliente não tenta realizar otimizações mais complexas realizadas pelo compilador na máquina virtual do servidor, mas durante a troca leva menos tempo para analisar e compilar um pedaço de código. Isso significa que as máquinas virtuais cliente podem iniciar mais rápido e exigir uma área de memória menor.
A máquina virtual de servidor contém um compilador adaptativo avançado que suporta muitas otimizações de compiladores C++ para otimização, do mesmo tipo, assim como algumas otimizações que não podem ser feitas com compiladores tradicionais, como o agressivo inline em chamadas de métodos virtuais. É uma vantagem competitiva e de desempenho, um compilador estático. Técnicas de otimização adaptativa são muito flexíveis em sua abordagem e frequentemente superam até mesmo técnicas avançadas de análise estática e compilação.
Quando o modo -Server inicia, a velocidade é lenta, mas uma vez em execução, o desempenho será muito melhorado, porque: quando a máquina virtual está no modo -Client, ela usa um compilador leve com codinome C1, e a máquina virtual iniciada no modo -Server usa um compilador com codinome C2, que é relativamente bem compilado do que o compilador C1, e o desempenho é maior após o serviço.
Geralmente, desde que você mude a ordem das duas configurações de -server KNOWN e -client KNOWN,A premissa é que tanto as pastas servidor quanto o cliente existem no diretório /jre/bin do JAVA_HOMEcorrespondente às suas respectivas JVMs
|