2013-02-18 50 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

乾杯