Qual o problema de fato?

Inúmeros desenvolvedores de sistemas em Java reclamam todos os dias de problemas com uma exceção que é tida como a exceção da memória: StackOverFlowError. A descrição oficial da exceção diz que ela é “lançada quando um estouro de pilha ocorre porque um aplicativo usou os recursos da máquina muito profundamente.”. Basicamente ele quis dizer que a aplicação Java consumiu muita memória em vista de algum processamento pesado e o Java não suportou, tendo em vista o seu limite máxima de memória usada.

Isso mesmo: limite de memória. Pense como seria se as linguagens não definissem isso e o seu aplicativo executasse um loop infinito com processamento pesado de recursos. A memória RAM do seu computador seria consumida até chegar ao fim.

Entretanto, em determinados casos se faz necessário, de fato, aumentar a memória base da JVM, uma vez que determinadas operações na são atendidas com a mesma, principalmente se você estiver lidando com o contexto web.

Como configurar?

Acesse no Windows 7 o menu “Iniciar > Painel de Controle > Java”. Isso irá abrir a tela de “Painel de Controle do Java”. Selecione a aba “Java” e clique no botão “Exibir...” e a tela da Figura 1 irá aparecer.

Configurações do JRE

Figura 1: Configurações do JRE

O campo de nome “Parâmetros do tempo de execução” existe para receber algumas configurações pré-definidas para o Java. Veja a lista de opções válidas:

  • Xmx512m para 512MB de memória para o Java.
  • Xmx1024m para 1GB de memória para o Java.
  • Xmx2048m para 2GB de memória para o Java.
  • Xmx3072m para 3GB de memória para o Java.

Então, configure a opção do campo em questão para o valor “-Xmx512m” e clique em “OK”.

Logo após clique em “Aplicar” para que a ação seja associada ao ambiente e pronto. Finalizado.

Extras

  • Nenhum reinício do computador é necessário depois de modificar a memória Java.
  • Este método também pode ser usado para o Windows 8.
  • Esta é uma quantidade "temporária" de memória que está disponível para aplicações Java quando você está executando-as. Ele não "rouba" ou permanentemente deduz da memória do computador. É apenas uma garantia para a JVM.
  • Conforme falado, se o Java não consegue encontrar memória suficiente despacha uma mensagem de "exceção" ao Windows como: "Exception in thread" main "java.lang.OutOfMemoryError: Java heap space".
  • O valor que você selecionar depende da quantidade de memória do computador e quanto de memória todos os processos em execução consumem.
  • Este método, com algumas modificações, também pode ser usado para Windows Xp.