早上一次迁移了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内存设置不好很容易出现内存溢出。造成内存原因是不一样的,当然处理方式也不一样。本文就介绍了Tomcat内存溢出的三种情况及解决办法分析
TOMCAT内存溢出之解决方法
Tomcat内存溢出三种情况及解决办法,不同的异常采用不同的方式解决,不能盲目的增加内存就可以了。
LINUX部署tomcat内存溢出解决方案 已经使用过了,确实是好用的。
Eclipse + Tomcat 内存溢出参数设置
tomcat内存溢出处理方法适用于java,开发工具myeclipse或eclipse
项目在tomcat下运行时,出现常见的几种内存溢出的解决方案
按照压缩包里面的操作说明把对应文件拷贝进去就没问题了。
根据网上总结tomcat内存溢出的各种解决办法,很实用!
数据库更新工具 tomcat内存溢出解决办法 在Birt中使用Web Services数据源
tomcat内存溢出总结:堆溢出。永久保存区域溢出 等等各种常见内存溢出问题的解决方法
tomcat内存溢出总结 在生产环境中tomcat内存设置不好很容易出现内存溢出。造成内存原因是不一样的,当然处理方式也不一样。 这里根据平时遇到的情况和相关资料进行一个总结。常见的一般会有下面三种情况: 1....
一次使用Eclipse Memory Analyzer分析Tomcat内存溢出.docx
本文档记录了本人在不同系统上遇到tomcat内存溢出的各种问题,给出的解决方案。 详细记录。好东西要共享才有价值哦!
tomcat内存溢出的设置