2016-12-09 3 views
2

Ich versuche derzeit, ca. 100.000 Tests auf einem 32-Bit-Windows-Rechner mit 4 GB RAM auszuführen. Ich habe die Standard-Listener mit dem Befehl -usedefaultlisteners false deaktiviert und ich habe keine benutzerdefinierten Listener/Reporter konfiguriert. Schlägt jedoch fehl, die Suite mit folgenden Stacktrace:OutOfMemoryError auch mit TestNG Listener/Reporter deaktiviert

Exception in thread "pool-2-thread-5" Exception in thread "pool-2-thread-7" java.lang.OutOfMemoryError: Java heap space 
java.lang.OutOfMemoryError: Java heap space 
Exception in thread "pool-2-thread-2" java.lang.OutOfMemoryError: Java heap space 
Exception in thread "pool-2-thread-6" java.lang.OutOfMemoryError: Java heap space 
Exception in thread "pool-2-thread-4" java.lang.OutOfMemoryError: Java heap space 
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space 

Ist es möglich, dass auch ohne die Zuhörer, TestNG Konfigurationen benötigen mehr als 4 GB RAM?

Welcher Prozess benötigt so viel Speicher?

Gibt es Optimierungen/Workarounds, um diese Tests ausführen zu lassen?

+1

Sehen Sie sich die todsicheren Berichte an, die generiert wurden, innerhalb von 'target/surefire-reports' haben Sie den vollständigen StackTrace. – Tunaki

+0

Führen Sie die Tests parallel aus. Wenn ja, welche Art von Parallelität haben Sie in der Datei "testng.xml" festgelegt? – nullpointer

+0

Ich verwende in meiner testng.xml keine 'parallelen' Einstellungen, aber ich habe einige Tests so konfiguriert, dass sie mit 15 Threads unter Verwendung des threadPoolSize-Attributs ausgeführt werden. – ejang

Antwort

1

Die Tatsache, dass Sie Hardware 4 GB Ram hat, bedeutet nicht, dass alles für JVM Heap verwendet wird. Die Heap-Größe hat einen maximalen Wert, der durch den Parameter -Xmx definiert wird.

In Ihrem Fall mit 4 GB verfügbar ist, würde ich versuchen, die Tests mit dieser Option ausführen:

java -Xmx2g mytest 

Dies wird für den Heap zu 2 GB erlaubt auf.