Melhorando a performance de sua Java Virtual Machine
Dica publicada em Java / Miscelânea
Melhorando a performance de sua Java Virtual Machine
Quantas vezes você está executando uma aplicação e a VM resolve que é a hora de passar o Full GC (Garbage Collector)? Você fica ali, esperando às vezes até um minuto até que o GC esteja feliz?
Seus problemas acabaram! Coletei os principais argumentos que podemos passar para o aplicativo afim de evitar esse stress com o Full GC.
Você deve adicionar estes argumentos quando for startar a sua aplicação. Exemplo:
$ java -verbose:gc -Xmx128m aplicacao
1° argumento: -Xms ou -Xmx
Serve para você especificar a quantidade de memória mínima e máxima, respectivamente.
2° argumento: -Xincgc
Maximiza o funcionamento do GC.
3° argumento: -Xloggc: logAplicacao.txt
Toda a informação sobre o funcionamento do GC é inserida neste arquivo. Bom para saber a quantas anda o consumo de memória da sua aplicação.
4° argumento: -verbose:gc
São extraídas mais informações sobre como está o funcionamento do GC sobre a VM.
5° argumento: -XX:+UseParallelGC
Este argumento habilita o funcionamento de um segundo GC. Este GC é uma thread daemon, assim como o GC normal, o que maximiza o funcionamento do GC.
6° argumento: -XX:+PrintGCDetails
Faz com que sejam extraídas mais informações sobre o funcionamento do GC.
7° argumento: -XX:+PrintGCTimeStamps
Faz com que também sejam extraídos os tempos de interações do GC na VM.
8° argumento: -XX:+PrintTenuringDistribution
Mostra a utilização, na memória, dos objetos coletados pelo GC.
9° argumento: -XX:+PrintHeapAtGC
Mostra informações do HEAD antes e depois da passagem do GC.
10° argumento: -XX:+UseParNewGC
Caso a sua máquina seja multiprocessador, esta opção faz com que o VM utilize toda a capacidade do multiprocessamento.
11° argumento: -XX:+AggressiveHeap
Faz com que o HEAP se torne agressivo, melhorando consideravelmente a performance da sua aplicação.
Essas são somente algumas das opções que a VM nos possibilita. Existem muitas outras, mas que eu ainda não utilizei, então não posso recomendar.
Seus problemas acabaram! Coletei os principais argumentos que podemos passar para o aplicativo afim de evitar esse stress com o Full GC.
Você deve adicionar estes argumentos quando for startar a sua aplicação. Exemplo:
$ java -verbose:gc -Xmx128m aplicacao
1° argumento: -Xms ou -Xmx
Serve para você especificar a quantidade de memória mínima e máxima, respectivamente.
2° argumento: -Xincgc
Maximiza o funcionamento do GC.
3° argumento: -Xloggc: logAplicacao.txt
Toda a informação sobre o funcionamento do GC é inserida neste arquivo. Bom para saber a quantas anda o consumo de memória da sua aplicação.
4° argumento: -verbose:gc
São extraídas mais informações sobre como está o funcionamento do GC sobre a VM.
5° argumento: -XX:+UseParallelGC
Este argumento habilita o funcionamento de um segundo GC. Este GC é uma thread daemon, assim como o GC normal, o que maximiza o funcionamento do GC.
6° argumento: -XX:+PrintGCDetails
Faz com que sejam extraídas mais informações sobre o funcionamento do GC.
7° argumento: -XX:+PrintGCTimeStamps
Faz com que também sejam extraídos os tempos de interações do GC na VM.
8° argumento: -XX:+PrintTenuringDistribution
Mostra a utilização, na memória, dos objetos coletados pelo GC.
9° argumento: -XX:+PrintHeapAtGC
Mostra informações do HEAD antes e depois da passagem do GC.
10° argumento: -XX:+UseParNewGC
Caso a sua máquina seja multiprocessador, esta opção faz com que o VM utilize toda a capacidade do multiprocessamento.
11° argumento: -XX:+AggressiveHeap
Faz com que o HEAP se torne agressivo, melhorando consideravelmente a performance da sua aplicação.
Essas são somente algumas das opções que a VM nos possibilita. Existem muitas outras, mas que eu ainda não utilizei, então não posso recomendar.