Domanda

Quando si esegue test JUnit, mi sembra sempre di incorrere in questo errore:

  

Eclipse OutOfMemoryError: lo spazio di heap

Ho controllato Eclipse con JConsole e della memoria heap picchi a circa 150MB. Ho impostato memoria heap a 1 GB.

Sto utilizzando i seguenti parametri quando si avvia 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

Qualcuno sa che cosa può causare questo problema? Succede solo durante l'esecuzione di test JUnit.

È stato utile?

Soluzione

test JUnit vengono eseguiti in una macchina virtuale diverso, come l'IDE Eclipse. Capita così che VM che è fuori di memoria e non quello di Eclipse.
È possibile modificare le impostazioni del vm di test nelle configurazioni esecuzione del test.
Si va alle configurazioni run e poi sotto argomenti, è possibile impostare gli argomenti VM.

Altri suggerimenti

A seguito della risposta @Thijs Wouters, per risolvere questo problema in Eclipse ho fatto il seguente:

  • Aggiunta una nuova configurazione Run sotto JUnit (Esegui> Configurazione Esegui> JUnit> Nuovo)
  • Nella scheda argomenti esposti VM argomenti per "-Xms64m -Xmx256m" o superiore se necessario

Probabilmente avete una perdita di memoria nel vostro test JUnit. Un Gotcha comune è questo: Junit creerà una nuova istanza di una classe TestCase per ogni metodo di prova in esso E tutte le variabili di istanza saranno mantenuti intorno fino a JUnit termina. Ciò significa che:. Se avete il metodo () una classe TestCase con 50 metodi di prova e una variabile di istanza che viene inizializzata con un oggetto grafico 1 MB nella configurazione, quindi quella classe TestCase richiede 50MB di spazio heap

Modifica il problema descritto in precedenza solo esiste nelle vecchie versioni di JUnit, penso che sia stato risolto in JUnit 4

.

Ho appena rilasciato un plugin per Eclipse che imposterà automaticamente la dimensione heap su lanciatori JUnit per voi. È possibile ottenere da http://code.google.com/p/junitlaunchfixer/ funziona con Eclipse Europa, Ganimede e Galileo.

Ho trovato la soluzione al mio problema - può aiutare gli altri;) Quando mi è stato l'aumento della dimensione heap mi è stato l'aumento della dimensione heap di applicazione eclissi, non di mio programma (che ho eseguito attraverso eclisse) Quello che dovevo fare è modificare i comandi di esecuzione prima di eseguire il mio programma.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top