Pergunta

Ao executar testes JUnit, eu sempre parecem correr para este erro:

eclipse OutOfMemoryError: espaço de pilha

Eu tenho monitorado Eclipse com JConsole e picos de memória heap em cerca de 150MB. Eu tenho conjunto de memória heap para 1GB.

Eu estou usando os seguintes argumentos ao iniciar Eclipse:

-vm "C:\Program Files\Java\jre1.5.0_08\bin\javaw.exe" -vmargs -Xmx1024M
-XX:MaxPermSize=128M -Dcom.sun.management.jmxremote.port=8999
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false

Alguém sabe o que pode estar causando esse problema? Isso só acontece quando executar testes JUnit.

Foi útil?

Solução

testes JUnit são executados em uma VM diferente como o Eclipse IDE. Assim é que vm que está sem memória e não o Eclipse um.
Você pode alterar as configurações da VM teste nas configurações de execução do teste.
Você vai para as configurações de execução e, em seguida, sob argumentos, você pode definir os argumentos vm.

Outras dicas

Na sequência da resposta @Thijs Wouters, para corrigir esse problema no eclipse eu fiz o seguinte:

  • Adicionado uma nova configuração Run sob JUnit (Executar> Executar configuration> JUnit> New)
  • Na guia argumentos definir os argumentos VM para "-Xms64m -Xmx256m" ou superior, se for preciso

Você provavelmente tem um vazamento de memória em seus testes JUnit. A pegadinha comum é esta: JUnit vai criar uma nova instância de uma classe TestCase para cada método de teste nele E todas as variáveis ??de instância serão mantidas até que termina JUnit. Isso significa que: se você tiver uma classe TestCase com 50 métodos de ensaio e uma variável de instância que é inicializado com um objeto gráfico 1MB em seu método de configuração (), em seguida, que a classe TestCase vai exigir espaço 50MB pilha

.

Editar:. o problema descrito acima só existe em versões mais antigas do JUnit, eu acho que foi fixado em JUnit 4

Eu apenas lançou um plugin para o Eclipse que irá definir automaticamente o tamanho da pilha em lançadores JUnit para você. Você pode obtê-lo a partir http://code.google.com/p/junitlaunchfixer/ ele funciona com o Eclipse Europa, Ganimedes e Galileo.

Eu encontrei a solução para o meu problema - pode ajudar os outros;) Quando eu estava aumentando o tamanho da pilha que estava aumentando o tamanho da pilha de aplicação eclipse, não do meu programa (que eu executado através eclipse) O que eu tinha que fazer é modificar os comandos de execução antes de executar o meu programa.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top