Avatar ·

O que são os parâmetros -Xms e -Xmx ao iniciar a JVM e como eles afetam a memória?

Olá a todos! Sou um desenvolvedor Java iniciante e recentemente enfrentei um problema ao executar minha aplicação no servidor. A aplicação processa grandes arquivos CSV (cerca de 500 MB) e percebi que ela cai periodicamente com o erro OutOfMemoryError: Java heap space.

Estou executando a aplicação via linha de comando mais ou menos assim:

java -jar myapp.jar

Um colega disse que preciso adicionar os parâmetros -Xms e -Xmx, mas não entendo bem o que eles fazem. Tentei adicioná-los aleatoriamente:

java -Xms512m -Xmx1024m -jar myapp.jar

Depois disso, o erro começou a aparecer com menos frequência, mas ainda ocorre às vezes quando o arquivo é especialmente grande. Li a documentação, mas parece muito complexa para um iniciante. Vocês podem explicar em termos simples:

  • O que são -Xms e -Xmx?
  • Qual a diferença entre eles?
  • Como escolher os valores corretamente?
  • P