2013-02-18 17 views
10

Jestem nowy w weblogic. Po uruchomieniu serwera, gdy widzę konsolę administratora i loguję się, zgłasza się poniżej wyjątku.przeciwległy błąd przestrzeni perm w dzienniku www

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 

Zrobiłem dużo google i znaleźć jakieś rozwiązanie, aby zainicjować JAVA_OPTIONS jak -XX:xmx i itp Próbowałem ustawić to w startdomainenv.cmd pliku, ale bez powodzenia.

Proszę o pomoc. Wszelkie wskazówki będą bardzo cenne.

Dzięki.

+0

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

Odpowiedz

12

Aby ustawić rozmiar PermGen, którego można użyć np. -XX:PermSize=512m -XX:MaxPermSize=512m.

Jeśli chodzi o Weblogic, ustaw JAVA_OPTIONS i zobacz, czy te opcje są poprawnie przekazywane jako parametry do procesu Java. Możesz także bezpośrednio ustawić te parametry w skrypcie startWeblogic.cmd.

Aby sprawdzić, czy twoje JAVA_OPTIONS są ustawione prawidłowo, dodaj echo %JAVA_OPTIONS% do skryptu startWeblogic.cmd i zobacz dane wyjściowe. Możesz również użyć np. jConsole, jstat lub jmap do monitorowania użycia Heap procesu Weblogic w czasie wykonywania. Spowoduje to wyświetlenie rozmiarów i zawodów użytkownika PermGen.

+0

dziękuję. To działa teraz – nakul

+0

To działa, po prostu bądź ostrożny, ponieważ JAVA_OPTIONS spowoduje działanie całego java na twoim komputerze, który może wykorzystywać tę zmienną systemową. Jeśli problem jest specyficzny dla Weblogic, zmień setDomainEnv.cmd, jak wskazuje Dileep. Wspominam tylko o tym, ponieważ ustawiłem tę zmienną, aby działała, tylko powodując problemy z innymi wersjami java dla innych działań związanych z kodem. –

6

Możesz spróbować, zmieniając ustawienia pamięci weblogic na swoim serwerze. * Idź do - <weblogic path>\Middleware\user_projects\domains\fms_domain\bin\setDomainEnv.cmd * Otwórz plik * Zmień ustawienia

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 
) 

zmienić te ustawienia, jak na swoje wymagania i środowiska.

3

aby zakończyć réponse z user267 należy zmienić również: zestaw MEM_MAX_PERM_SIZE_64BIT = -XX: MaxPermSize = 256m

zestaw MEM_MAX_PERM_SIZE_32BIT = -XX: MaxPermSize = 256m

0

W moim przypadku rozwiązaniem było edytować plik DOMAIN\bin\setDomainEnv.cmd. Następujące zmiany zostały dokonane zanim serwer ruszy zgodnie z przeznaczeniem:

  • W -Xms i -Xmx Wartości zostały zwiększone
  • wartości -XX:PermSize i -XX:MaxPermSize zwiększyły zbyt

i wreszcie, ale chyba najważniejsze

  • Warunki if "%JAVA_VENDOR%"=="Sun" ( zmieniono na if "%JAVA_VENDOR%"=="Oracle" ( w celu prawidłowego rozpoznania mojej maszyny JVM.

Przed ostatnią zmianą zmiany pamięci były tylko częściowo odzwierciedlone w inicjowanej maszynie JVM, co oznaczało, że parametry dotyczące przestrzeni PermGen zostały po prostu zignorowane.

0

Po prostu chcę podzielić się z czymś, co rozwiązało problem: Złożyłem setDomainEnv.sh i echo $ {JAVA_OPTIONS} i zauważyłem, że argumentów MEM nie było.

Tak więc dodałem MEM_ARGS do ostatniej konfiguracji JAVA_OPTIONS.

tak:
JAVA_OPTIONS = "$ {JAVA_OPTIONS} $ {MEM_ARGS}" JAVA_OPTIONS eksport

zdrowie

Powiązane problemy