Question

Lors de l'exécution des tests JUnit, il me semble toujours courir dans cette erreur:

  

éclipser OutOfMemoryError: espace de tas

I ai suivi Eclipse avec des pics mémoire JConsole et en tas à environ 150MB. J'ai mis la mémoire 1 Go tas.

J'utilise les arguments suivants lors du démarrage 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

Quelqu'un sait ce qui peut être la cause de ce problème? Il ne se produit que lors de l'exécution des tests JUnit.

Était-ce utile?

La solution

tests JUnit sont exécutés dans une machine virtuelle différente comme l'IDE Eclipse. Il est donc que vm qui est hors de la mémoire et non pas celui d'Eclipse.
Vous pouvez modifier les paramètres de la machine virtuelle de test dans les configurations d'exécution du test.
Vous allez dans les configurations d'exécution, puis sous arguments, vous pouvez définir les arguments vm.

Autres conseils

Suite à @Thijs réponse Wouters, pour résoudre ce problème dans Eclipse je l'ai fait ce qui suit:

  • Ajout d'une nouvelle configuration d'exécution sous JUnit (Run> Run Configuration> JUnit> Nouveau)
  • Dans l'onglet arguments arguments VM pour "-Xms64m -Xmx256m" ou plus si besoin est

Vous avez probablement une fuite de mémoire dans vos tests JUnit. Une Gotcha commune est la suivante: Junit va créer une nouvelle instance d'une classe de cas de test pour toutes les méthodes de test dans ce Et toutes les variables d'instance seront conservés autour jusqu'à ce que JUnit se termine. Cela signifie que:. Si vous avez une classe TestCase avec 50 méthodes d'essai et une variable d'instance qui est initialisé avec un objet graphique 1 Mo dans votre méthode setUp (), cette classe TestCase exigera l'espace de tas de 50Mo

Modifier le problème décrit ci-dessus n'existe que dans les anciennes versions de JUnit, je pense qu'il a été fixé dans JUnit 4

.

Je viens de publier un plugin pour Eclipse qui définit automatiquement la taille du segment sur les lanceurs JUnit pour vous. Vous pouvez l'obtenir http://code.google.com/p/junitlaunchfixer/ il fonctionne avec Eclipse Europa, Ganymède et Galileo.

J'ai trouvé la solution à mon problème - il peut aider les autres;) Quand j'augmenter la taille du tas j'augmenter la taille du tas d'application de l'éclipse, et non de mon programme (que j'exécuté par éclipse) Ce que je devais faire est de modifier les commandes d'exécution avant d'exécuter mon programme.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top