2013-02-18 11 views
10

Sono nuovo di weblogic. Dopo aver avviato il server quando vedo la console di amministrazione e ottengo il login, esso getta sotto l'eccezione.errore perm space space gen in weblogic

Root cause of ServletException. 
java.lang.OutOfMemoryError: PermGen space 
at java.lang.ClassLoader.defineClass1(Native Method) 
at java.lang.ClassLoader.defineClass(ClassLoader.java:791) 
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 
at weblogic.utils.classloaders.GenericClassLoader.defineClass(GenericClassLoader.java:335) 
at weblogic.utils.classloaders.GenericClassLoader.findLocalClass(GenericClassLoader.java:288) 
Truncated. see log file for complete stacktrace 

ho fatto molta google e trovato qualche soluzione per inizializzare JAVA_OPTIONS come -XX:xmx ed ecc ho cercato di impostare questo nel startdomainenv.cmd file, ma senza fortuna.

Per favore aiuto. Qualsiasi suggerimento sarà molto apprezzato.

Grazie.

+0

[Vedi] (http://stackoverflow.com/q/13428920/1037210) . – Lion

risposta

12

Per impostare la dimensione PermGen è possibile utilizzare ad es. -XX:PermSize=512m -XX:MaxPermSize=512m.

Per quanto riguarda Weblogic, impostare le JAVA_OPTIONS e vedere se queste opzioni sono correttamente passati come parametri nel tuo processo Java. È anche possibile impostare direttamente questi parametri nello script startWeblogic.cmd.

Per verificare che il proprio JAVA_OPTIONS sia impostato correttamente, aggiungere echo %JAVA_OPTIONS% nello script startWeblogic.cmd e vedere l'output. Inoltre, puoi utilizzare per es. jConsole, jstat o jmap per monitorare l'utilizzo di heap del processo Weblogic in fase di esecuzione. Questo ti mostrerà le dimensioni e l'occupazione di PermGen.

+0

grazie. Funziona ora – nakul

+0

Funziona, basta fare attenzione poiché JAVA_OPTIONS avrà effetto su tutti i java sul tuo computer che potrebbero utilizzare questa variabile di sistema. Se il problema è specifico di Weblogic, modificare setDomainEnv.cmd come indicato da Dileep. Lo dico solo perché ho impostato questa variabile per farlo funzionare, solo per causare problemi con le altre mie versioni Java per altri tentativi di codice. –

6

Si può provare cambiando le impostazioni di memoria di weblogic sul proprio server. * Vai a - <weblogic path>\Middleware\user_projects\domains\fms_domain\bin\setDomainEnv.cmd * Aprire il file * Modificare le impostazioni

if "%JAVA_VENDOR%"=="Sun" (
set WLS_MEM_ARGS_64BIT=-Xms256m -Xmx512m 
set WLS_MEM_ARGS_32BIT=-Xms256m -Xmx512m 
) else (
set WLS_MEM_ARGS_64BIT=-Xms512m -Xmx512m 
set WLS_MEM_ARGS_32BIT=-Xms512m -Xmx512m 
) 

modificare queste impostazioni secondo il vostro requisito e l'ambiente.

3

per completare il reponse di user267 è necessario modificare anche: set MEM_MAX_PERM_SIZE_64BIT = -XX: MaxPermSize = 256m

set MEM_MAX_PERM_SIZE_32BIT = -XX: MaxPermSize = 256m

0

Nel mio caso la soluzione era quella di modificare il file DOMAIN\bin\setDomainEnv.cmd. Le seguenti modifiche sono state apportate prima che il server avrebbe cominciato come previsto:

  • I -Xms e -Xmx valori sono stati incrementati
  • sono stati aumentati
  • i valori -XX:PermSize e -XX:MaxPermSize troppo

e, infine, ma probabilmente più importante

  • le condizioni if "%JAVA_VENDOR%"=="Sun" ( sono state modificate in if "%JAVA_VENDOR%"=="Oracle" ( per riconoscere correttamente la mia JVM.

Prima di quest'ultima modifica, le modifiche alla memoria erano solo parzialmente riflesse sulla JVM inizializzata e ciò significava che i parametri relativi allo spazio PermGen venivano semplicemente ignorati.

0

Voglio solo condividere quello che ha risolto il problema per me: Ho estratto setDomainEnv.sh ed echo $ {JAVA_OPTIONS} e ho notato che gli argomenti MEM non c'erano.

Quindi ho aggiunto MEM_ARGS all'ultima configurazione di JAVA_OPTIONS.

Come così:
JAVA_OPTIONS = "$ {JAVA_OPTIONS} $ {} MEM_ARGS" JAVA_OPTIONS esportazione

Acclamazioni