tomcat内存溢出

早上一次迁移了6个项目到新云服务器上,跑不起来。连旧项目也挂掉。

赶紧把新加入的项目注释掉。重启tomcat,依旧跑不起来。

查看日志部分错误信息

 

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.catalina.core.ContainerBase.startInternal(ContainerBase.java:1123)
        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.run(FutureTask.java:262)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:744)
Caused by: java.lang.OutOfMemoryError: PermGen space
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
        at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2918)
        at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1174)
        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1669)
        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1547)
        at org.apache.log4j.spi.LoggingEvent.getLocationInformation(LoggingEvent.java:253)
        at org.apache.log4j.helpers.PatternParser$LocationPatternConverter.convert(PatternParser.java:500)
        at org.apache.log4j.helpers.PatternConverter.format(PatternConverter.java:65)
        at org.apache.log4j.PatternLayout.format(PatternLayout.java:506)

 一堆头大的东西,不过仔细瞧瞧,OutOfMemoryError还是认识的酷

 

 

步骤一:查看进程(既然重启无效,就查进程号,然后杀死)

 

[root@AY131127171338391047Z tomcat_webapps]# ps -ef |grep tomcat
root     20712     1 13 13:23 pts/0    00:02:19 /usr/java/jdk1.7.0_45/bin/java -Djava.util.logging.config.file=/apache-tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Xms1024m -Xmx1024m -XX:PermSize=256M -XX:MaxNewSize=512m -XX:MaxPermSize=512m -Djava.endorsed.dirs=/apache-tomcat/endorsed -classpath /apache-tomcat/bin/bootstrap.jar:/apache-tomcat/bin/tomcat-juli.jar -Dcatalina.base=/apache-tomcat -Dcatalina.home=/apache-tomcat -Djava.io.tmpdir=/apache-tomcat/temp org.apache.catalina.startup.Bootstrap start
root     21260 17501  0 13:40 pts/0    00:00:00 grep tomcat

 

 步骤二:杀死进程

 

 

kill -9 20712

 步骤三:当当当。。。最重要的东东来了,增加JVM内存

 

 

vim /apache-tomcat/bin/catalina.sh

 在顶行添加

 

 

JAVA_OPTS='-Xms512m -Xmx1024m -XX:PermSize=256M -XX:MaxNewSize=512m -XX:MaxPermSize=512m'

 步骤四:重启tomcat测试吧

 

 

参数说明:

-Xms【初始化内存大小】

-Xmx【可以使用的最大内存】

-XX:PermSize 【JVM初始分配的非堆内存】

-XX:MaxNewSize【 堆区域新生代内存的最大可分配大小】

 

-XX:MaxPermSize指明虚拟机为java永久生成对象(Permanate generation)如,class对象、方法对象这些可反射(reflective)对象分配内存限制,这些内存不包括在Heap(堆内存)区之中。

 

 

你可能感兴趣的:(tomcat)