Java

[JVM Parameters]
-server - Para simplificar, este parâmetro te da uma melhor performance final do que inicial. Caso sua arquitetura seja 64bits, o server é o default, e para arquiteturas 32bits, o client é o default.
-XX:+UseLargePages - Se o seu SO permite Large Memory Pages habilite esta função e sete também outros parâmetros relacionados a isso. Para saber mais sobre LMP leia este documento.
-XX:+AggressiveOpts - Habilita algumas otimizações de código, que segundo a documentação, é pra estar habilitada como padrão nas versões futuras.
-XX:+UseFastAccessorMethods - Usa versões otimizadas para métodos get de tipos primitivos.
-XX:+UseParallelGC - Habilita o GC para abrir várias thread e atuar paralelamente.
-XX:ParallelGCThreads=6  – Número de thread que serão abertas para GC. Por default é aberto uma Thread para cada processador existente.
-XX:+UseParNewGC - Igual ao parâmetro UseParallelGC, porém para a área Young do Heap.
-XX:+UseTLAB - Usa Thread-Local para alocação de objetos

[MEMORY]
-Xms 512M – Parâmetro de memória que define o mínimo de memória para a aplicação.
-Xmx 8G – Parâmetro de memória que define o máximo de memória para a aplicação

[YOUNG]
-XX:NewSize=256M - Tamanho mínimo para a área Young do Heap.
-XX:MaxNewSize=1G - Tamanho máximo para a área Young do Heap.

[OLD]
-XX:PermSize=512M - Tamanho mínimo da área de objetos permanentes em memória.
-XX:MaxPermSize=2G - Tamanho máximo da área de objetos permanentes em memória.

Obs: não sete os valores máximos maiores que o -Xmx.

Para ver oturos parâmetros para VM veja esta página.
Para ver alguns exemplos de tuning de aplicações veja este link.
Leia também a FAQ sobre GC.

Ferramentas para Monitoramento de Aplicações

Segue abaixo algumas ferramentas que podem te ajudar a entender melhor sua aplicação e te ajudar a chegar a valores para os parâmetros. Existem muitas outras, outra hora comento sobre algumas mais específicas, mas comentei sobre essas apenas porque já vem com o próprio JDK, e vc as encontra em $JAVA_HOME/bin.

  • jps – Mostra os processos Java que estão rodando na máquina.
  • jinfo – Mostra informações sobre o processo java que está rodando, como bibliotecas que ele está usando, parametros de inicialização, parâmetros gerais da VM como aquelas que aparecem em System.getEnv().
  • jmap – Mostra informações sobre o uso de memória por uma aplicação, uso de cada divisão da Heap como a Young, Old, Tenure, Perm, etc.
  • jsadebugd – Este processo se junta ao processo passado como parâmetro e adiciona propriedades de debug ao processo em questão.
  • jconsole – JConsole é uma ferramenta visual que monitora e mostra várias informações sobre um processo, como uso de memória, número de threads, processamento, etc.
  • jstat – Coleta e loga informações estatísticas sobre performance.
No comments yet.