12

我是 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文件中设置它,但没有运气。

请帮忙。任何指针将不胜感激。

谢谢。

4

5 回答 5

13

要设置PermGen大小,您可以使用例如-XX:PermSize=512m -XX:MaxPermSize=512m.

关于Weblogic,设置 JAVA_OPTIONS 并查看这些选项是否作为参数正确传递到您的 Java 进程中。您也可以直接在startWeblogic.cmd脚本中设置这些参数。

要检查您JAVA_OPTIONS的设置是否正确,请添加echo %JAVA_OPTIONS%startWeblogic.cmd脚本中并查看输出。此外,您可以使用例如jConsolejstatjmap来监控 Weblogic 进程在运行时的堆使用情况。这将向您显示PermGen的大小和占用。

于 2013-02-19T00:58:13.487 回答
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
)

根据您的要求和环境更改这些设置。

于 2013-08-13T10:49:49.397 回答
3

要完成 user267 的响应,您还必须更改:设置 MEM_MAX_PERM_SIZE_64BIT=-XX:MaxPermSize=256m

设置 MEM_MAX_PERM_SIZE_32BIT=-XX:MaxPermSize=256m

于 2013-10-31T15:44:13.337 回答
0

就我而言,解决方案是编辑DOMAIN\bin\setDomainEnv.cmd文件。在服务器按预期启动之前进行了以下修改:

  • 和值增加-Xms-Xmx
  • 和值-XX:PermSize-XX:MaxPermSize增加了

最后,但可能是最重要的

  • if "%JAVA_VENDOR%"=="Sun" (条件已更改为正确if "%JAVA_VENDOR%"=="Oracle" (识别我的 JVM。

在最后一次修改之前,内存更改仅部分反映到初始化的 JVM,这意味着有关 PermGen 空间的参数被简单地忽略了。

于 2014-04-24T11:36:02.100 回答
0

我只想分享为我解决问题的方法:我找到了 setDomainEnv.sh 和 echo ${JAVA_OPTIONS} 并注意到 MEM 参数不存在。

所以我在 JAVA_OPTIONS 的最后设置中添加了 MEM_ARGS。

像这样:
JAVA_OPTIONS="${JAVA_OPTIONS} ${MEM_ARGS}" 导出 JAVA_OPTIONS

干杯

于 2015-04-21T05:40:24.807 回答