web-dev-qa-db-fra.com

face à une erreur d'espace permanent dans weblogic

Je suis nouveau sur weblogic . Après avoir démarré le serveur quand je vois la console de l'administrateur et que je me connecte, il jette une exception ci-dessous.

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

J'ai fait beaucoup de google et trouvé une solution pour initialiser Java_OPTIONS comme -XX:xmx et etc . J'ai essayé de définir cela dans le fichier startdomainenv.cmd mais sans succès.

S'il vous plaît aider . Tous les pointeurs seront très appréciés.

Merci.

11
nakul

Pour définir PermGen size, vous pouvez utiliser par exemple -XX:PermSize=512m -XX:MaxPermSize=512m.

Concernant Weblogic , définissez Java_OPTIONS et voyez si ces options sont correctement transmises en tant que paramètres à votre processus Java. Vous pouvez également définir directement ces paramètres dans le script startWeblogic.cmd.

Pour vérifier que vos Java_OPTIONS sont correctement définis, ajoutez echo %Java_OPTIONS% dans le script startWeblogic.cmd et consultez le résultat. En outre, vous pouvez utiliser par exemple jConsole , jstat ou jmap pour surveiller l'utilisation du processus Weblogic par le tas lors de l'exécution. Cela vous montrera la taille et l’occupation du PermGen .

13
Aleš

Vous pouvez essayer en modifiant les paramètres de mémoire de weblogic sur votre serveur. * Allez à - <weblogic path>\Middleware\user_projects\domains\fms_domain\bin\setDomainEnv.cmd * Ouvrez le fichier * Modifiez les paramètres

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
)

Modifiez ces paramètres selon vos besoins et votre environnement.

7
coder1608

pour compléter la réponse de user267, vous devez également modifier: set MEM_MAX_PERM_SIZE_64BIT = -XX: MaxPermSize = 256m

set MEM_MAX_PERM_SIZE_32BIT = -XX: MaxPermSize = 256m

3
Karim Oukara

Dans mon cas, la solution consistait à éditer le fichier DOMAIN\bin\setDomainEnv.cmd. Les modifications suivantes ont été apportées avant que le serveur ne démarre comme prévu:

  • Les valeurs -Xms et -Xmx ont été augmentées
  • les valeurs -XX:PermSize et -XX:MaxPermSize ont également été augmentées

et enfin, mais probablement le plus important 

  • les conditions if "%Java_VENDOR%"=="Sun" ( ont été remplacées par if "%Java_VENDOR%"=="Oracle" ( afin de reconnaître correctement ma machine virtuelle Java.

Avant cette dernière modification, les modifications de la mémoire n'étaient que partiellement reflétées dans la JVM initialisée, ce qui signifiait que les paramètres concernant l'espace PermGen étaient simplement ignorés.

0
zovits

Je veux juste partager ce qui a résolu le problème pour moi: Je me suis procuré setDomainEnv.sh et echo $ {Java_OPTIONS} et j'ai remarqué que les arguments MEM n'étaient pas là.

J'ai donc ajouté MEM_ARGS à la dernière configuration de Java_OPTIONS.

Ainsi:
Java_OPTIONS = "$ {Java_OPTIONS} $ {MEM_ARGS}" Export Java_OPTIONS

À votre santé

0
Abraham