每一个人
当我运行服务器时有异常,我认为是内存泄漏!
我尝试了许多参数JAVA_OPS的值,但仍然有异常!
在控制台中,我得到了这个异常,如下所示!
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发布于 2013-11-18 12:19:13
指定您已经尝试过的“许多值”总是有意义的。
首先,它们需要是JAVA_OPTS,但这也可能是这个问题中的一个错误。然而,使用CATALINA_OPTS更好。
最重要的是,当存在PermGen错误时,-Xmx根本帮不上忙。您希望设置-XX:MaxPermSize=256m (或其他数量的内存)。当您搜索错误消息时,您会发现很多关于这个问题的信息-- PermGen是Sun/Oracle使用的特定内存区域。增加可用的堆内存一点帮助都没有。
发布于 2013-11-18 12:11:33
我发现GlassFish (另一个)也会发生这种情况。通常,我们必须重新启动Application,以释放Application使用的所有内存和资源。大多数,如GlassFish和Tomcat,都非常需要内存。您可能需要在catalina.sh文件(或其他catalina.sh文件)中添加以下行以更改JVM参数,这可能会增加内存分配:
export CATALINA_OPTS="-Xms512M -Xmx1024M"发布于 2013-11-18 12:54:36
增加记忆的意义是什么而不去分析原因。我建议尝试使用一些分析工具(JProfiler,YourToolkKit)来捕获问题人员。
一旦你对造成问题的原因有了一些了解,你就可以着手(例如:打开连接、未关闭的流等)。
祝你好运。
https://stackoverflow.com/questions/20047152
复制相似问题