Tomcat报错—Tomcat内存溢出及大小调整
2016-02-17 15:12
288 查看
本文记录一些常见的Tomcat经常出现的内存溢出问题,在查询大量数据和加载jar包出现异常。一般JVM内存溢出(OOM),分为堆内存溢出和PermGen区内存溢出:
1:java.lang.OutOfMemoryError: PermGen space(PermGen区内存溢出)
PermGen
space(Permanent Generation space),是指内存的永久保存区域,主要用于存放Class和Meta信息的,Class在被Loader时就会被放到PermGen space中, 它和存放类实例(Instance)的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对其进行清理,所以如果应用中有很多CLASS的话,就很可能出现PermGen space错误。如果加载的Class超过MaxPermSize,就会抛出该异常,可以通过调整MaxPermSize进行解决。
这种错误常常出现在WEB服务器在对项目中的JSP进行pre—compile(预编译)的时候,还有就是项目使用了很多的第三方的jar包,这个jar的大小超过了JVM默认的大小(4M),也是会出现此错误的。
2:java.lang.OutOfMemoryError: Java heap space(堆溢出)
JVM堆是指java程序运行过程中JVM可以调配使用的内存空间。JVM在启动的时候会自动设置Heap
size的值,其初始空间(-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4。可以利用JVM提供的-Xmn -Xms -Xmx等选项可进行设置。Heap size 的大小是Young Generation 和Tenured Generaion 之和。在JVM中如果98%的时间是用于GC且可用的Heap size 不足2%的时候将抛出此异常信息。
提示:Heap
Size 最大不要超过可用物理内存的80%,一般的要将-Xms和-Xmx选项设置为相同,而-Xmn为1/4的-Xmx值。
这两种方式的解决方法,在/bin/catalina.bat文件添加,根据自己的需求修改内存大小
加入
JAVA_OPTS="-server -XX:PermSize=64M -XX:MaxPermSize=128m
解释:
JAVA_OPTS='-Xms【初始化内存大小】 -Xmx【可以使用的最大内存】'
需要把这个两个参数值调大。例如:
JAVA_OPTS='-Xms256m -Xmx512m'
表示初始化内存为256MB,可以使用的最大内存为512MB。
1:java.lang.OutOfMemoryError: PermGen space(PermGen区内存溢出)
PermGen
space(Permanent Generation space),是指内存的永久保存区域,主要用于存放Class和Meta信息的,Class在被Loader时就会被放到PermGen space中, 它和存放类实例(Instance)的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对其进行清理,所以如果应用中有很多CLASS的话,就很可能出现PermGen space错误。如果加载的Class超过MaxPermSize,就会抛出该异常,可以通过调整MaxPermSize进行解决。
这种错误常常出现在WEB服务器在对项目中的JSP进行pre—compile(预编译)的时候,还有就是项目使用了很多的第三方的jar包,这个jar的大小超过了JVM默认的大小(4M),也是会出现此错误的。
2:java.lang.OutOfMemoryError: Java heap space(堆溢出)
JVM堆是指java程序运行过程中JVM可以调配使用的内存空间。JVM在启动的时候会自动设置Heap
size的值,其初始空间(-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4。可以利用JVM提供的-Xmn -Xms -Xmx等选项可进行设置。Heap size 的大小是Young Generation 和Tenured Generaion 之和。在JVM中如果98%的时间是用于GC且可用的Heap size 不足2%的时候将抛出此异常信息。
提示:Heap
Size 最大不要超过可用物理内存的80%,一般的要将-Xms和-Xmx选项设置为相同,而-Xmn为1/4的-Xmx值。
这两种方式的解决方法,在/bin/catalina.bat文件添加,根据自己的需求修改内存大小
加入
JAVA_OPTS="-server -XX:PermSize=64M -XX:MaxPermSize=128m
rem ----- Execute The Requested Command --------------------------------------- JAVA_OPTS="-server -XX:PermSize=64M -XX:MaxPermSize=128m" echo Using CATALINA_BASE: "%CATALINA_BASE%" echo Using CATALINA_HOME: "%CATALINA_HOME%" echo Using CATALINA_TMPDIR: "%CATALINA_TMPDIR%"
解释:
JAVA_OPTS='-Xms【初始化内存大小】 -Xmx【可以使用的最大内存】'
需要把这个两个参数值调大。例如:
JAVA_OPTS='-Xms256m -Xmx512m'
表示初始化内存为256MB,可以使用的最大内存为512MB。
相关文章推荐
- tomcat配置jdbc
- eclipse中maven项目部署到tomcat
- JAVA基础笔记4--Tomcat初识
- Tomcat学习—Tomcat的端口修改和编码方式修改
- 关于eclipse部署项目后,在tomcat中的webapps文件夹下没有项目
- UbuntuServer12安装、mysql+tomcat部署
- JAVA遇见HTML——tomcat篇
- Ubuntu14.04安装tomcat7.0和jdk1.7
- Tomcat学习—Tomcat的server.xml配置文件
- Tomcat学习—Tomcat的web.xml配置文件
- Nginx+tomcat配置集群
- Eclipse 启动Tomcat后web项目的classes的子文件夹中没有calss文件
- tomcat部署项目的几种方法
- Tomcat学习—Tomcat的简介和目录以及配置文件介绍(Windows环境)
- Maven + Eclipse + Tomcat 调试设置
- tomcat 在linux下启动时找不到JDK的解决方法
- maven + tomcat 热部署
- Tomcat学习—Tomcat的下载安装和环境变量的配置(Windows环境)
- MyEclipse2014配置Tomcat开发JavaWeb程序JSP以及Servlet
- Linux下安装Tomcat服务器和部署Web应用