我是新来的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
我做了很多的谷歌和发现了一些解决方案来初始化JAVA_OPTIONS
像-XX:xmx
等我试图设置这startdomainenv.cmd
文件,但没有运气。
请帮忙。 任何指针将高度赞赏。
谢谢。
要设置PermGen的大小,你可以使用如-XX:PermSize=512m -XX:MaxPermSize=512m
。
关于WebLogic中 ,设置JAVA_OPTIONS,看看这些选项正确地作为参数传递到你的Java程序。 您也可以直接设置在这些参数startWeblogic.cmd
脚本。
要检查您的JAVA_OPTIONS
设置是否正确,添加echo %JAVA_OPTIONS%
进入startWeblogic.cmd
脚本,并查看输出。 此外,您还可以使用如JConsole的 ,jstat,或JMAP监控在运行时的WebLogic进程的堆的使用情况。 这将显示大小和PermGen的占领。
你可以在你的服务器改变的weblogic的内存设置尝试。 *去- <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
)
更改这些设置按照您的要求和环境。
完成user267还必须改变的回复:设置MEM_MAX_PERM_SIZE_64BIT = -XX:MaxPermSize参数=256米
设置MEM_MAX_PERM_SIZE_32BIT = -XX:MaxPermSize参数=256米
在我的情况的解决方案是编辑DOMAIN\bin\setDomainEnv.cmd
文件。 以下修改作了之前按预期服务器将开始:
- 该
-Xms
和-Xmx
值增加 - 将
-XX:PermSize
和-XX:MaxPermSize
值增加太多
最后,但也许是最重要的
- 在
if "%JAVA_VENDOR%"=="Sun" (
条件改为if "%JAVA_VENDOR%"=="Oracle" (
以正确识别我的JVM。
这最后修改前的内存变化只能部分反映到初始化JVM,这意味着关于PermGen的空间参数进行了简单地忽略。
我只是想分享一下解决了我的问题:我采购setDomainEnv.sh和echo $ {JAVA_OPTIONS}并注意到MEM参数都没有了。
因此,我增加MEM_ARGS到JAVA_OPTIONS的最后的安装。
像这样:
JAVA_OPTIONS = “$ {JAVA_OPTIONS} $ {} MEM_ARGS” 出口JAVA_OPTIONS
干杯