2010-11-15 40 views
1

Je cours des essais de junit d'un script de fourmi. Les tests sont exécutés avec succès, alors la fourmi passe à la tâche junitreport pour créer le rapport html. Cette tâche échoue avec un java.lang.OutOfMemoryError: Java heap space error.junitreport ant tâche donnant java.lang.OutOfMemoryError: Java heap space

Comment puis-je augmenter la taille du tas pour cette tâche? Ou existe-t-il un autre moyen de résoudre cette erreur?

Quelques informations supplémentaires:

Il fonctionnait très bien jusqu'à ce que j'ajouté 40 tests supplémentaires

J'ai eu un coup d'oeil à la sortie xml des tests et il semble raisonnable dire qu'il est pas plein de longs messages d'erreur.

+1

Essayez de supprimer les cadres si vous le pouvez. Cela prend beaucoup de mémoire. Vous pouvez également augmenter l'espace de tas de ant dans ant.bat ou ant – vinothkr

Répondre

3

vous pouvez utiliser la variable d'environnement ANT_OPTS pour augmenter la fourmi de taille de tas utilise

0

Vous pouvez utiliser l'ensemble maxmemory dans les tâches junit lui-même.

<junit printsummary="yes" fork="true" haltonfailure="no" showoutput="yes" maxmemory="512m"> 

Comme the docs explain,

Maximum amount of memory to allocate to the forked VM. Ignored if fork is disabled. Note: If you get java.lang.OutOfMemoryError: Java heap space in some of your tests then you need to raise the size like maxmemory="128m"

+0

En fait, ce changement de paramètre affecte uniquement l'utilisation de la mémoire de la tâche de junit, mais n'a malheureusement aucun effet sur le junitreport. @Nikolaus réponse est une meilleure approche. Par exemple ANT_OPTS = -Xmx512m – Zsolt

0

Le « maxmemory="###m » semble fonctionner que si vous utilisez une fourchette, si vous ne l'utilisez fourchette (comme je suis) qu'il ne soit pas utilisé, vous devez utiliser le ANT_OPTS pour changer le tas.

2

Cette erreur a été relevée dans ANT bug 34342. Le consensus général est qu'il est causé par une consommation excessive de mémoire dans le fichier XSLT utilisé pour générer le rapport, et qu'il ne sera pas corrigé dans ANT.

Ce qui a fonctionné pour moi a été d'augmenter la taille de tas maximale passée à ant, par exemple -Xmx3304m. Comme certaines des autres réponses mentionnées ici, vous pouvez utiliser ANT_OPTS pour passer la taille maximale du tas à ant. En ce qui concerne la taille réelle maximale du tas, il est recommandé de choisir entre 1/4e de mémoire physique ou 1 Go, la plus petite des deux. Vous devrez peut-être dépasser la limite de 1 Go pour éviter cette erreur de mémoire. Voir le guide Garbage Collector Ergonomics sur le site Web d'Oracle.