首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: PermGen空间

问java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: PermGen空间
EN

Stack Overflow用户
提问于 2013-11-18 11:54:48
回答 6查看 20.2K关注 0票数 4

每一个人

当我运行服务器时有异常,我认为是内存泄漏!

我尝试了许多参数JAVA_OPS的值,但仍然有异常!

在控制台中,我得到了这个异常,如下所示!

代码语言:javascript
复制
Nov 18, 2013 2:48:48 PM org.apache.catalina.startup.HostConfig deployDescriptors
SEVERE: Error waiting for multi-thread deployment of context descriptors to complete
java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: PermGen space
at java.util.concurrent.FutureTask$Sync.innerGet(Unknown Source)
at java.util.concurrent.FutureTask.get(Unknown Source)
at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:578)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:474)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1401)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:317)
at     
org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:402)
at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:347)
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1140)
at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:800)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.OutOfMemoryError: PermGen space

Exception in thread "main" java.lang.OutOfMemoryError: PermGen space
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2013-11-18 12:19:13

指定您已经尝试过的“许多值”总是有意义的。

首先,它们需要是JAVA_OPTS,但这也可能是这个问题中的一个错误。然而,使用CATALINA_OPTS更好。

最重要的是,当存在PermGen错误时,-Xmx根本帮不上忙。您希望设置-XX:MaxPermSize=256m (或其他数量的内存)。当您搜索错误消息时,您会发现很多关于这个问题的信息-- PermGen是Sun/Oracle使用的特定内存区域。增加可用的堆内存一点帮助都没有。

票数 5
EN

Stack Overflow用户

发布于 2013-11-18 12:11:33

我发现GlassFish (另一个)也会发生这种情况。通常,我们必须重新启动Application,以释放Application使用的所有内存和资源。大多数,如GlassFish和Tomcat,都非常需要内存。您可能需要在catalina.sh文件(或其他catalina.sh文件)中添加以下行以更改JVM参数,这可能会增加内存分配:

代码语言:javascript
复制
export CATALINA_OPTS="-Xms512M -Xmx1024M"
票数 3
EN

Stack Overflow用户

发布于 2013-11-18 12:54:36

增加记忆的意义是什么而不去分析原因。我建议尝试使用一些分析工具(JProfiler,YourToolkKit)来捕获问题人员。

一旦你对造成问题的原因有了一些了解,你就可以着手(例如:打开连接、未关闭的流等)。

祝你好运。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20047152

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档