Eu recebo esta mensagem durante a construção do meu projeto
java.lang.OutOfMemoryError: espaço de heap Java
Como faço para aumentar o espaço de heap, tenho 8 Gb ou RAM, é impossível que o maven tenha consumido tanto, achei este http://vikashazrati.wordpress.com/2007/07/26/quicktip-how-to-increase-the -java-heap-memory-for-maven-2-on-linux / como fazer no linux, mas estou no Windows 7. Como posso alterar o espaço de heap do java no windows?
Respostas:
A variável de ambiente a definir é
MAVEN_OPTS
, por exemploMAVEN_OPTS=-Xmx1024m
. Amaxmem
configuração no pom só se aplica quando você define o plug-in do compilador para bifurcarjavac
em uma nova JVM. Caso contrário, o plugin é executado dentro da mesma VM que o Maven e, portanto, dentro da memória passada na linha de comando por meio doMAVEN_OPTS
.Para definir MAVEN_OPTS no Windows 7:
-Xmx1024m
(ou mais)Abra uma nova janela de comando e execute
mvn
.fonte
Se você estiver ficando sem espaço de heap durante a execução do teste JUnit infalível (ou à prova de falhas), alterar MAVEN_OPTS pode não ajudá-lo. Continuei tentando configurações diferentes no MAVEN_OPTS sem sorte até encontrar este post que corrigiu o problema.
Basicamente, os JUnits entram em seu próprio ambiente e ignoram as configurações em MAVEN_OPTS. Você precisa configurar o surefire em seu pom para adicionar mais memória para os JUnits.
Esperançosamente, isso pode economizar algum tempo para outra pessoa!
Edit: Copiando solução do blog de Keith Chapman apenas no caso de o link quebrar algum dia:
Atualização (31/05/2017): Obrigado a @johnstosh por apontar isso - o infalível evoluiu um pouco desde que coloquei esta resposta lá. Aqui está um link para a documentação e um exemplo de código atualizado (a linha arg ainda é a parte importante para esta questão):
fonte
Deve ser o mesmo comando, exceto SET em vez de EXPORT
fonte
C:\my_project>MAVEN_OPTS=-Xmx512m 'MAVEN_OPTS' is not recognized as an internal or external command, operable program or batch file.
No Mac: em vez de
JAVA_OPTS
eMAVEN_OPTS
, use _JAVA_OPTIONS. Isso funciona!fonte
Depois de tentar usar a variável MAVEN_OPTS sem sorte, me deparei com este site que funcionou para mim. Então, tudo que tive que fazer foi adicionar -Xms128m -Xmx1024m às opções padrão da VM e funcionou.
Para alterá-los no Eclipse, vá para Janela -> Preferências -> Java -> JREs instalados. Selecione o JRE / JDK marcado e clique em editar.
fonte
Em janelas:
Adicione uma variável de ambiente (nas variáveis de sistema e de usuário, estou com um problema estranho, que obtém a var de vários lugares, então eu adiciono em ambas).
Nomeie-o MAVEN_OPTS.
O valor será:
-Xms1024m -Xmx3000m -XX:MaxPermSize=1024m -XX:+CMSClassUnloadingEnabled
Os números podem ser diferentes, faça-os em relação ao tamanho da memória.
Eu tive esse problema e isso resolveu, nada mais!
fonte
Funcionou - para mudar no Eclipse, vá para Janela -> Preferências -> Java -> JREs instalados. Selecione o JRE / JDK marcado e clique em editar.
Argumentos VM padrão = -Xms128m -Xmx1024m
fonte
Você está procurando 2 opções para
java
:Coloque-os em sua invocação de linha de comando do
java
executável, assim:Lembre-se de que você pode querer que os tamanhos de heap inicial e máximo sejam iguais, dependendo do aplicativo, pois isso evita o redimensionamento do heap durante o tempo de execução (o que pode demorar em aplicativos que precisam responder). O redimensionamento do heap pode envolver mover vários objetos e refazer a contabilidade.
Para projetos do dia-a-dia, transforme-os no que você achar que é bom o suficiente. Perfil para obter ajuda.
fonte