Frage

Wenn JUnit-Tests laufen, scheine ich immer in diesen Fehler zu starten:

  

eclipse OutOfMemoryError: Heap-Speicher

Ich habe bei etwa 150 MB Eclipse JConsole und Heap-Speicher Spitzen überwacht. Ich habe Heap-Speicher auf 1 GB eingestellt.

Ich verwende die folgenden Argumente, wenn Eclipse-Start:

-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

Wer weiß, was dieses Problem verursachen kann? Es geschieht nur, wenn JUnit-Tests ausgeführt werden.

War es hilfreich?

Lösung

JUnit-Tests werden in einer anderen vm als Eclipse-IDE ausführen. So kommt es, dass vm, die aus der Erinnerung und nicht den Eclipse ist.
Sie können in den Ausführungskonfigurationen des Tests die Einstellungen des Test vm ändern.
Sie gehen auf die Ausführungskonfigurationen und dann unter Argumente können Sie die vm Argumente gesetzt.

Andere Tipps

Im Anschluss an @Thijs Wouters Antwort, um dieses Problem in Eclipse zu beheben Ich habe die folgende:

  • Es wurde eine neue Run-Konfiguration unter JUnit (Ausführen> Ausführen Konfiguration> JUnit> Neu)
  • Innerhalb des Arguments Registersatzes VM Argumente „-Xms64m -Xmx256m“ oder höher, wenn es sein muss

Sie haben wahrscheinlich ein Speicherleck in Ihren JUnit-Tests haben. Eine gemeinsame Gotcha ist dies: Junit eine neue Instanz einer Klasse Testcase erstellen wird für jede Testmethode darin Und alle Instanzvariablen um gehalten werden, bis JUnit beendet. Das bedeutet:., Wenn Sie eine Testcase-Klasse mit 50 Testmethoden und einer Instanzvariablen, die mit einem 1MB Objektgraphen in Ihrem setUp () -Methode initialisiert wird, dann ist das Testcase Klasse 50MB Heap-Speicher benötigt

Edit: das Problem oben nur bei älteren beschriebenen Versionen von JUnit vorhanden ist, denke ich, es in JUnit 4 festgelegt wurde

.

Ich habe gerade ein Plugin für Eclipse veröffentlicht, die automatisch die Heap-Größe auf JUnit Werfer für Sie festgelegt werden. Sie können es von http://code.google.com/p/junitlaunchfixer/ es funktioniert mit Eclipse Europa, Ganymed und Galileo.

fand ich die Lösung für mein Problem - es anderen helfen kann;) Wenn ich die Heap-Größe zunahm ich die Heap-Größe von Eclipse-Anwendung zu erhöhen, nicht meines Programms (was ich durch Eclipse ausgeführt) Was ich tun musste, die Ausführungsbefehlen ändern, bevor mein Programm ausgeführt wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top