早上一次迁移了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(堆内存)区之中。】