WAR文件在Tomcat服务器中引发OutOfMemoryError [英] WAR file throws OutOfMemoryError in Tomcat server

查看:64
本文介绍了WAR文件在Tomcat服务器中引发OutOfMemoryError的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个Spring MVC WAR文件,可以在我的本地机器(程序和网站)上完美运行.

I have a Spring MVC WAR file that works perfectly in my local machine (program and website).

一旦我将文件上传到服务器(一个Tomcat 7)并尝试访问它,则catalina日志文件将指示java.lang.OutOfMemoryError.

Once I upload the file into the server (a Tomcat 7) and try to access it, the catalina log file indicates java.lang.OutOfMemoryError.

我尝试通过在导出前将-Xmx2048m-Xmx1024m附加到VM Arguments部分来修改Eclipse IDE Run > Run Configurations部分的Arguments选项卡中的内存,但是除了第一次导致的更改外,没有做任何更改

I have tried modifying the memory in the Arguments tab of Eclipse IDE's Run > Run Configurations section by appending -Xmx2048m or -Xmx1024m to the VM Arguments section before exporting but neither did any changes except the first resulted into a

Error occurred during initialization of VM
Could not reserve enough space for object heap

在我的本地计算机上.

这是我初次访问该站点时的完整日志文件:

Here is the full log file from my initial visit to the site:

12 25, 13 6:16:23 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-bio-11032"]
12 25, 13 6:16:23 PM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 658 ms
12 25, 13 6:16:23 PM org.apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
12 25, 13 6:16:23 PM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.26
12 25, 13 6:16:23 PM org.apache.catalina.startup.HostConfig deployWAR
INFO: Deploying web application archive /home/username/tomcat7/webapps/project.war
12 25, 13 6:16:23 PM org.apache.catalina.loader.WebappClassLoader validateJarFile
INFO: validateJarFile(/home/username/tomcat7/webapps/project/WEB-INF/lib/servlet-api.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class
12 25, 13 6:16:40 PM org.apache.catalina.startup.HostConfig deployWARs
SEVERE: Error waiting for multi-thread deployment of WAR files to complete
java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: Java heap space
  at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:222)
  at java.util.concurrent.FutureTask.get(FutureTask.java:83)
  at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:751)
  at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:471)
  at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1412)
  at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:312)
  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:401)
  at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:346)
  at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1145)
  at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:782)
  at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
  at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1566)
  at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1556)
  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
  at java.util.concurrent.FutureTask.run(FutureTask.java:138)
  at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
  at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.OutOfMemoryError: Java heap space
  at org.apache.tomcat.util.bcel.classfile.LineNumberTable.<init>(LineNumberTable.java:68)
  at org.apache.tomcat.util.bcel.classfile.Attribute.readAttribute(Attribute.java:144)
  at org.apache.tomcat.util.bcel.classfile.Code.<init>(Code.java:86)
  at org.apache.tomcat.util.bcel.classfile.Attribute.readAttribute(Attribute.java:140)
  at org.apache.tomcat.util.bcel.classfile.FieldOrMethod.<init>(FieldOrMethod.java:58)
  at org.apache.tomcat.util.bcel.classfile.Method.<init>(Method.java:72)
  at org.apache.tomcat.util.bcel.classfile.ClassParser.readMethods(ClassParser.java:268)
  at org.apache.tomcat.util.bcel.classfile.ClassParser.parse(ClassParser.java:128)
  at org.apache.catalina.startup.ContextConfig.processAnnotationsStream(ContextConfig.java:2032)
  at org.apache.catalina.startup.ContextConfig.processAnnotationsJar(ContextConfig.java:1923)
  at org.apache.catalina.startup.ContextConfig.processAnnotationsUrl(ContextConfig.java:1891)
  at org.apache.catalina.startup.ContextConfig.processAnnotations(ContextConfig.java:1877)
  at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1270)
  at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:855)
  at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:345)
  at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
  at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
  at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5161)
  at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
  at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:895)
  at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:871)
  at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:615)
  at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:958)
  at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1599)
  at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
  ... 5 more
12 25, 13 6:16:41 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-11032"]
12 25, 13 6:16:45 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 21778 ms

我该如何解决?

推荐答案

就像在评论部分中所说的那样,您必须增加服务器使用的JVM的堆大小,而不要增加eclipse的大小(因为只有eclipse在本地运行时会产生效果).

Like said in the comments section, you have to increase heap size on the JVM that is used by the server, not in your eclipse (as that only has the effect when you run it locally).

因此,请尝试将其设置为-Xmx512m-Xmx1024m(或您需要的其他任何名称).

So try setting that to -Xmx512m or -Xmx1024m (or whatever else you need).

如果您不知道如何执行此操作,请让我知道您正在运行的Tomcat版本以及平台(Linux,Windows等).

If you dont know how to do this let me know what version of Tomcat you are running and the platform (Linux, Windows etc).

这篇关于WAR文件在Tomcat服务器中引发OutOfMemoryError的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆