2013-02-18 56 views
10

我是weblogic的新手。 启动服务器后,当我看到管理员控制台并获得登录时,它会抛出异常。面向weblogic中的perm gen space错误

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

[见](http://stackoverflow.com/q/13428920/1037210) 。 – Lion 2013-02-19 01:07:09

回答

12

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

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

要检查您的JAVA_OPTIONS设置是否正确,请将echo %JAVA_OPTIONS%添加到startWeblogic.cmd脚本中并查看输出。另外,您可以使用例如jConsole,jstatjmap在运行时监视Weblogic进程的堆使用情况。这将告诉你PermGen的尺寸和职业。

+0

谢谢。它现在正在工作 – nakul 2013-02-19 19:17:01

+0

这个工作,只是要小心,因为JAVA_OPTIONS会影响你的机器上所有可能利用这个系统变量的java。如果问题是特定于Weblogic的,请将DDoep指出的setDomainEnv.cmd改为。我只提到这一点,因为我设置了这个变量来使它工作,只是为了解决其他代码工作中的其他java版本问题。 – 2015-12-04 13:11:49

6

您可以尝试更改服务器中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 
) 

更改这些设置按照您的要求和环境。

3

完成user267还必须改变的回复: 集MEM_MAX_PERM_SIZE_64BIT = -XX:MaxPermSize参数=256米

集MEM_MAX_PERM_SIZE_32BIT = -XX:MaxPermSize参数=256米

0

在我的情况的解决办法是编辑DOMAIN\bin\setDomainEnv.cmd文件。以下修改作了服务器将开始按预期之前:

  • -Xms-Xmx值增加
  • -XX:PermSize-XX:MaxPermSize值增加太多

,最后,但也许是最重要的

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

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

0

我只是想分享什么解决了我的问题: 我来源的setDomainEnv.sh和echo $ {JAVA_OPTIONS}并注意到MEM参数不存在。

所以我添加了MEM_ARGS到JAVA_OPTIONS的最后一个设置。

像这样:
JAVA_OPTIONS = “$ {JAVA_OPTIONS} $ {MEM_ARGS}” 出口JAVA_OPTIONS

干杯