2013-02-01 17 views
12

Come si aumenta la memoria disponibile nell'ambiente di riproduzione? Sto esaurendo la memoria dopo un po 'di tempo durante l'esecuzione dei test.Memoria insufficiente in PlayFramework 2.0

In particolare, ottengo questo errore:

java.lang.OutOfMemoryError: PermGen space

+0

http://stackoverflow.com/questions/6763453/limit-java-heap-space-for-play-framework-globaly La risposta consigliata in questa discussione potrebbe aiutare – smk

risposta

7

Le opzioni di avvio Java per gioco sono fondatore nello script:

$PLAY_HOME/framework/build

Lo spazio PermGen può essere aumentata modificando la linea alla parte inferiore del file:

java ${DEBUG_PARAM} -Xms512M -Xmx1536M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=384M ...

Impostare la variabile MaxPermSize su un valore appropriato.

13

Impostando la variabile di ambiente "_JAVA_OPTIONS", è possibile passare le variabili che play/sbt utilizzerà durante il normale utilizzo. Ho scoperto che questo mi ha aiutato a evitare errori di spazio PermGen durante l'esecuzione di dev e test.

Ad esempio:

_JAVA_OPTIONS export = "- Xms64m Xmx1024m -Xss2m XX: MaxPermSize = 256m"

+0

upvote per le variabili di ambiente. Questo è molto più utile perché ti permette di impostare queste impostazioni per diversi ambienti. abbiamo un server separato per lo sviluppo e uno per la nostra app di produzione e non abbiamo bisogno di tanta memoria sul nostro server di sviluppo. Oltre a considerazioni per i nostri ambienti di sviluppo locale. – xyclos

+0

Upvote tranne che la domanda originale riguardava lo spazio PermGen quindi l'ultimo argomento deve essere MaxPermSize = 256m – Nonos

14

Ho risolto questo problema aggiungendo:

javaOptions ++= Seq("-Xmx2048M", "-Xms512M", "-XX:MaxPermSize=2048M") 

in Build.scala alle impostazioni.

+1

Impostare un massimo di 2Gb per perm è lo spazio gen è, almeno, non sapere cosa significa perm gen e rimandare il problema al futuro . Devi capire perché la tua applicazione stia allocando così tanti metadati di classe ... –

+0

@Jonathan che non è vero per tutti i casi d'uso. My Play! l'app sta eseguendo un PageRank algo su un grafico di Cassovary da 2 milioni di margini ... ha tutto il diritto di allocare più perm gen. ;) – crockpotveggies

+0

Non c'è un flag "-mem" supportato dalla riproduzione? Non riesco a trovare la documentazione su questo ovunque, ma l'ho già vista prima. –

Problemi correlati