Проблема с пространственным пространством perm gen в weblogic
Я новичок в 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
Я много сделал google и нашел некоторое решение для инициализации JAVA_OPTIONS
как -XX:xmx
и т.д.
Я попытался установить это в файле startdomainenv.cmd
, но не повезло.
Пожалуйста, помогите.
Любые указатели будут высоко оценены.
Спасибо.
Ответы
Ответ 1
Чтобы установить размер PermGen, вы можете использовать, например. -XX:PermSize=512m -XX:MaxPermSize=512m
.
Что касается Weblogic, установите JAVA_OPTIONS и проверьте, правильно ли они были переданы в качестве параметров в ваш Java-процесс. Вы также можете напрямую установить эти параметры в startWeblogic.cmd
script.
Чтобы проверить правильность установки JAVA_OPTIONS
, добавьте echo %JAVA_OPTIONS%
в startWeblogic.cmd
script и посмотрите результат. Кроме того, вы можете использовать, например, jConsole, jstat или jmap, чтобы отслеживать использование кучи процесса Weblogic во время выполнения. Это покажет вам размеры и занятие PermGen.
Ответ 2
Вы можете попробовать, изменив настройки памяти веб-журнала на своем сервере.
* Идти к -
<weblogic path>\Middleware\user_projects\domains\fms_domain\bin\setDomainEnv.cmd
* Открыть файл
* Измените настройки
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
)
Измените эти настройки в соответствии с требованиями и условиями.
Ответ 3
чтобы выполнить ответ пользователя267, вы также должны изменить:
set MEM_MAX_PERM_SIZE_64BIT = -XX: MaxPermSize = 256m
установить MEM_MAX_PERM_SIZE_32BIT = -XX: MaxPermSize = 256 м
Ответ 4
В моем случае решением было отредактировать файл DOMAIN\bin\setDomainEnv.cmd
. Следующие изменения были сделаны до того, как сервер запустится так, как предполагалось:
- Значения
-Xms
и -Xmx
были увеличены.
- также были увеличены значения
-XX:PermSize
и -XX:MaxPermSize
и, наконец, но, вероятно, самое главное
- условия
if "%JAVA_VENDOR%"=="Sun" (
были изменены на if "%JAVA_VENDOR%"=="Oracle" (
, чтобы правильно распознать мою JVM.
До этой последней модификации изменения памяти частично отражались только на инициализированной JVM, и это означало, что параметры, относящиеся к пространству PermGen, просто игнорировались.
Ответ 5
Я просто хочу поделиться тем, что решило проблему для меня:
Я получил setDomainEnv.sh и echo ${JAVA_OPTIONS} и заметил, что аргументов MEM не было.
Итак, я добавил MEM_ARGS к последней настройке JAVA_OPTIONS.
Так вот:
JAVA_OPTIONS = "$ {JAVA_OPTIONS} ${MEM_ARGS}"
экспорт JAVA_OPTIONS
Приветствия