我是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
文件中设置它,但没有运气。
请帮忙。 任何指针都将受到高度赞赏。
感谢。
答案 0 :(得分:13)
要设置 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 的大小和职业。
答案 1 :(得分:7)
您可以尝试更改服务器中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
)
根据您的要求和环境更改这些设置。
答案 2 :(得分:3)
要完成user267的响应,您还必须更改: 设置MEM_MAX_PERM_SIZE_64BIT = -XX:MaxPermSize = 256m
设置MEM_MAX_PERM_SIZE_32BIT = -XX:MaxPermSize = 256m
答案 3 :(得分:0)
在我的情况下,解决方案是编辑DOMAIN\bin\setDomainEnv.cmd
文件。在服务器按预期启动之前进行了以下修改:
-Xms
和-Xmx
值增加了-XX:PermSize
和-XX:MaxPermSize
值也增加了最后,但可能最重要的是
if "%JAVA_VENDOR%"=="Sun" (
条件已更改为if "%JAVA_VENDOR%"=="Oracle" (
,以便正确识别我的JVM。在最后一次修改之前,内存更改仅部分反映到初始化的JVM,这意味着有关PermGen Space的参数被忽略了。
答案 4 :(得分:0)
我只想分享一下为我解决问题的方法: 我采购了setDomainEnv.sh和echo $ {JAVA_OPTIONS}并注意到MEM参数不存在。
所以我将MEM_ARGS添加到JAVA_OPTIONS的最后一次设置。
像这样:干杯