Para configurar parâmetros JVM para minimizar pausas na coleta de lixo, você pode seguir estas etapas:
1. Defina o tamanho do heap:
- Defina o tamanho máximo de heap:- Use o sinalizador `-Xmx` para definir o tamanho máximo de heap.
- Por exemplo, `-Xmx2g` define o tamanho máximo de heap para 2 GB.
- Defina o tamanho inicial do heap:
- Use o sinalizador `-Xms` para definir o tamanho inicial do heap.
- Por exemplo, `-Xms2g` define o tamanho inicial do heap para 2 GB.
2. Defina o tamanho da geração jovem:
- Defina o tamanho da geração jovem:- Use o sinalizador `-Xmn` para definir o tamanho da geração jovem.
- Por exemplo, `-Xmn1g` define o tamanho da geração jovem para 1 GB.
3. Configure o Coletor de Lixo:
- Use o coletor de lixo Garbage-First (G1):- Use o sinalizador `-XX:+UseG1GC` para habilitar o coletor de lixo G1.
- Este coletor foi projetado para minimizar os tempos de pausa.
4. Defina o tempo máximo de pausa:
- Defina o tempo máximo de pausa:- Use o sinalizador `-XX:MaxGCPauseMillis` para definir o tempo máximo de pausa.
- Por exemplo, `-XX:MaxGCPauseMillis=200` define o tempo máximo de pausa para 200 milissegundos.
5. Definir os threads de GC paralelos:
- Defina o número de threads de GC paralelos:- Use o sinalizador `-XX:ParallelGCThreads` para definir o número de threads GC paralelos.
- Por exemplo, `-XX:ParallelGCThreads=20` define o número de threads GC paralelos para 20.
6. Definir os threads de GC simultâneos:
- Defina o número de threads de GC simultâneos:- Use o sinalizador `-XX:ConcGCThreads` para definir o número de threads GC simultâneos.
- Por exemplo, `-XX:ConcGCThreads=5` define o número de threads GC simultâneos como 5.
7. Defina a porcentagem inicial de ocupação do heap:
- Definir a porcentagem inicial de ocupação do heap:- Use o sinalizador `-XX:InitiatingHeapOccupancyPercent` para definir a porcentagem de ocupação do heap inicial.
- Por exemplo, `-XX:InitiatingHeapOccupancyPercent=70` define a porcentagem de ocupação do heap inicial para 70%.
8. Monitorar e ajustar:
- Monitorar coleta de lixo:- Use ferramentas como VisualVM ou GCeasy para monitorar a coleta de lixo.
- Ajuste os parâmetros da JVM conforme necessário para minimizar os tempos de pausa.
Seguindo estas etapas, é possível configurar parâmetros JVM para minimizar pausas na coleta de lixo e garantir desempenho eficiente do aplicativo.
Citações:[1] https://www.uber.com/blog/jvm-tuning-garbage-collection/
[2] https://docs.datastax.com/en/dse/6.8/managing/operations/configure-garbage-first-collection.html
[3] https://sematext.com/blog/java-garbage-collection-tuning/
[4] https://docs.oracle.com/cd/E55119_01/doc.71/e55122/cnf_jvmgc.htm
[5] https://docs.oracle.com/cd/E40972_01/doc.70/e40973/cnf_jvmgc.htm