80 votes

Comment prévient-on java.lang.OutOfMemoryError : PermGen space à Scala compilation ?

J’ai remarqué un comportement étrange de mon compilateur scala. Occasionnellement, il lève une exception OutOfMemoryError lors de la compilation d’une classe. Voici le message d’erreur :

Il n'arrive que de temps en temps, et l’erreur n’est généralement pas levée sur la compile ultérieure exécute. J’utilise Scala 2.9.0 et compiler par SBT.

Est-ce quelqu'un a un indice quant à ce qui pourrait être la cause de cette erreur ? Merci d’avance pour vos idées.

100voto

michaelliu Points 1200

J’ai utiliser HomeBrew pour installer sbt sur OS X. Il prend en charge un argument qui peut être mis en du fichier avec `` .

47voto

Alexey Romanov Points 39124

La cause de est qu’il n’a pas assez d' [espace de génération permanente](http://mark.koli.ch/2009/01/understanding-javas-perm-gen-maxpermsize-heap-space-etc.html) :) Si vous utilisez Oracle JVM, vous devez ajouter le (ou quelque autre montant d’espace) l’argument de votre `` script. D’autres JVM, regarder leur documentation.

6voto

Alex Stewart Points 135

J’ai eu ce problème, joué un peu avec elle pendant 10 minutes, regarder des sites essayer de changer la taille de la mémoire.

Il s’avère que je l’ai résolu par,

Puis,

Cela autorisé pour moi.

5voto

Ivan Points 12891

Il ressemble à une fuite de mémoire dans le TAS pour moi que dans mon cas, le programme compile et s'exécute avec succès, pendant environ 3 à 5 fois avant de frapper l'exception qui est fixé par SBT redémarrer.

La solution la plus adéquate, en fait, semble être -XX:MaxPermSize= de la JVM de paramètre comme Alexey Romanov suggère ou de redémarrer SBT périodiquement si ça aide.

Mais il est une autre façon intéressante: essayez de passer à Java 8. Autant que je sache, il n'utilise pas PermGen plus et est probablement à l'abri de cette exception de cette façon.

J'ai encore de l'espoir SBT auteurs de régler cette question dans les futures versions.

3voto

niebo Points 11

Je suis bâtiment avec le plugin de sbt Jenkins et eu les mêmes problèmes. Ils ont été résolus après avoir copié le SBT_OPTS du fichier sbt aux drapeaux JVM de la config job Jenkins.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X