2013-12-25 3 views
3

У меня есть файл WAR MVC Spring, который отлично работает на моей локальной машине (программе и веб-сайте).WAR файл выбрасывает OutOfMemoryError на сервере Tomcat

Как только я загружаю файл на сервер (Tomcat 7) и пытаюсь получить к нему доступ, файл журнала каталогов указывает java.lang.OutOfMemoryError.

Я попытался модифицировать память в закладке Run > Run Configurations секции Eclipse IDE в Arguments путем добавления -Xmx2048m или -Xmx1024m в разделе VM Arguments перед экспортом, но ни делали какие-либо изменения, кроме первого, в результате в

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

в моей локальная машина.

Вот полный лог-файл с моего первого посещения сайта:

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 

Как решить эту проблему?

+0

Вы недавно задали один и тот же вопрос. – Prasad

+0

@JavaLearner, привет, да, тот, который вы предложили, прежде чем я упомянул здесь, его ошибка не появилась первой, потому что у меня была ошибка порта сервера, но она снова отображается. Пожалуйста, помогите мне. –

+4

Вам нужно увеличить память кучи на JVM, которая используется сервером, а не в вашем затмении. – Zyga

ответ

2

Как указано в разделе комментариев, вы должны увеличить размер кучи на JVM, который используется сервером, а не в вашем затмении (поскольку это имеет эффект только при локальном запуске).

Так что попробуйте установить это на -Xmx512m или -Xmx1024m (или что-то еще, что вам нужно).

Если вы не знаете, как это сделать, дайте мне знать, какую версию Tomcat вы используете, и платформу (Linux, Windows и т. Д.).

+0

Спасибо. Это 'Tomcat 7' –

+1

Это сообщение показывает вам, как это сделать. Надеюсь, это поможет, любые вопросы дайте мне знать. http://stackoverflow.com/questions/6897476/tomcat-7-how-to-set-initial-heap-size-correctly – Zyga

+0

Итак, я нашел файл '/ root/tomcat/bin/setenv.sh'. Правильно ли, что мне просто нужно добавить строку 'export CATALINA_OPTS =" - Xms512M -Xmx1024M "? –

1

Попробуйте увеличить размер кучи JVM.

-Xms<size>        set initial Java heap size 
-Xmx<size>        set maximum Java heap size 
-Xss<size>        set java thread stack size 

Для примера. -Xms (минимальный размер) и -Xmx (максимальный размер)

-Xms64m -Xmx256m 
0

Я получил эту ошибку в сервере Ubuntu Amazon AWS - Tomcat 7

Я решил проблему, первым размещения мой TOMCAT файл catalina.sh и обновления следующая строка:

locate catalina.sh 

/usr/share/tomcat7/bin/catalina.sh 

sudo vi /usr/share/tomcat7/bin/catalina.sh 

добавить следующую строку после лучших комментариев:

CATALINA_OPTS="$CATALINA_OPTS -XX:MaxPermSize=256m" 
Смежные вопросы