在tomcat运行java web时有时候会出现内存溢出的 情况 java.lang.OutOfMemoryError
这时候我们就需要根据不同的情况,进行不同的处理
1、java.lang.OutOfMemoryError: PermGen space
PermGen space的全称是Permanent Generation space,是指内存的永久保存区域OutOfMemoryError: PermGen space。从文字上看就是内存溢出,解决方法是加大内存。
这里主要存放class和meta信息,如果JVM加载的class过多的话,这时候就有可能报错了,一般情况下class不会太多,我们就稍微提下其内存分配额
解决方案:手动修改配置
如果在window则编辑tomcat的catalina.bat文件,如果字啊Linux编辑tomcat的catalina.sh文件, 在第一行的后面,加一句
set JAVA_OPTS=-server -XX:PermSize=64M -XX:MaxPermSize=128m
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%的时候将抛出此异常信息。
这里出现错误的话,有两个解决方案:一个优化代码,优化浪费堆内存的代码块,另外一个就是修改tomcat的JVM 的-Xmn -Xms -Xmx大小
在这里,我们只说下修改配置
set JAVA_OPTS=-server -Xms256m -Xmx512m-XX:MaxNewSize=256m
另外 如果要看效果可以到tomcat的启动页面,看是否设置成功
如果设置成功,那么启动页面的日志里面会打印出来的
2017-10-17 10:42:37 org.apache.catalina.startup.VersionLoggerListener log 信息: Server version: Apache Tomcat/7.0.69 2017-10-17 10:42:37 org.apache.catalina.startup.VersionLoggerListener log 信息: Server built: Apr 11 2016 07:57:09 UTC 2017-10-17 10:42:37 org.apache.catalina.startup.VersionLoggerListener log 信息: Server number: 7.0.69.0 2017-10-17 10:42:37 org.apache.catalina.startup.VersionLoggerListener log 信息: OS Name: Windows NT (unknown) 2017-10-17 10:42:37 org.apache.catalina.startup.VersionLoggerListener log 信息: OS Version: 6.2 2017-10-17 10:42:37 org.apache.catalina.startup.VersionLoggerListener log 信息: Architecture: x86 2017-10-17 10:42:37 org.apache.catalina.startup.VersionLoggerListener log 信息: Java Home: F:\Java\java6\jdk1.6.0_33\jre 2017-10-17 10:42:37 org.apache.catalina.startup.VersionLoggerListener log 信息: JVM Version: 1.6.0_33-b03 2017-10-17 10:42:37 org.apache.catalina.startup.VersionLoggerListener log 信息: JVM Vendor: Sun Microsystems Inc. 2017-10-17 10:42:37 org.apache.catalina.startup.VersionLoggerListener log 信息: CATALINA_BASE: C:\LLL-PDI-WEB\lll-mps-instances\lll-mps 2017-10-17 10:42:37 org.apache.catalina.startup.VersionLoggerListener log 信息: CATALINA_HOME: C:\LLL-PDI-WEB\apache-tomcat-7.0.69 2017-10-17 10:42:37 org.apache.catalina.startup.VersionLoggerListener log 信息: Command line argument: -Xms256m 2017-10-17 10:42:37 org.apache.catalina.startup.VersionLoggerListener log 信息: Command line argument: -Xmx512m 2017-10-17 10:42:37 org.apache.catalina.startup.VersionLoggerListener log 信息: Command line argument: -XX:PermSize=128M 2017-10-17 10:42:37 org.apache.catalina.startup.VersionLoggerListener log 信息: Command line argument: -XX:MaxPermSize=256M 2017-10-17 10:42:37 org.apache.catalina.startup.VersionLoggerListener log 信息: Command line argument: -Djdk.tls.ephemeralDHKeySize=2048 2017-10-17 10:42:37 org.apache.catalina.startup.VersionLoggerListener log