2014-05-13 57 views
1

PermGen的空間,我使用Apache的Tomcat的7.0.12運行我的申請,我每次重新啓動服務器時收到以下錯誤。java.util.concurrent.ExecutionException:java.lang.OutOfMemoryError:在Tomcat中

java.lang.RuntimeException: java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: PermGen space 
    at org.apache.tomcat.util.threads.DedicatedThreadExecutor.execute(DedicatedThreadExecutor.java:62) 
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5198) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145) 
    at org.apache.catalina.core.StandardContext.reload(StandardContext.java:3832) 
    at org.apache.catalina.loader.WebappLoader.backgroundProcess(WebappLoader.java:424) 
    at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1205) 
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1391) 
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1401) 
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1401) 
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1380) 
    at java.lang.Thread.run(Thread.java:745) 
Caused by: java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: PermGen space 
    at java.util.concurrent.FutureTask.report(FutureTask.java:122) 
    at java.util.concurrent.FutureTask.get(FutureTask.java:188) 
    at org.apache.tomcat.util.threads.DedicatedThreadExecutor.execute(DedicatedThreadExecutor.java:56) 
    ... 10 more 
Caused by: java.lang.OutOfMemoryError: PermGen space 

我已經設置了變量CATALINA_OPTS和JAVA_OPTS。 CATALINA_OPTS:-Xms512m -Xmx1024M JAVA_OPTS:-Xms1024m -Xmx10246m -XX:新尺寸=512米-XX:MaxNewSize =356米-XX:PermSize =1024米-XX:MaxPermSize參數=1024米

,但仍然得到同樣的錯誤。我正在使用sts作爲IDE。

請幫幫我,如何解決這個問題。

回答

0

Java應用程序只允許使用有限的內存。應用程序啓動過程中指定了特定應用程序可以使用的確切內存量。您正在通過指定-Xmx和-XX:MaxPermSize參數來完成此操作。

「java.lang.OutOfMemoryError:PermGen space」消息表示內存中的永久大小區域已耗盡,因此您可以嘗試增加已指定的參數。

但看當前的配置,您已經設置你的PermGen大小1024米,所以我可以猜測,要麼

一)不被拿起你的配置變化 - 例如可考慮使用正在運行的進程PS就像下面,我看到使用512米作爲最大允許PermGen的大小:

Ivos-MacBook-Pro:testcases ivomagi$ ps axu|grep java 
ivomagi   999 195.3 1.5 9644872 129756 s000 S+ 4:15PM 0:04.47 /usr/bin/java -XX:MaxPermSize=512m eu.plumbr.demo.GarbageProducer 

b)您要加載一些真正大(TM)的情況下,而你只需要增加PermGen的進一步