常见的一般会有下面三种情况:
1.OutOfMemoryError: Java heap space
2.OutOfMemoryError: PermGen space
3.OutOfMemoryError: unable to create new native thread.
1.java.lang.OutOfMemoryError: PermGen space
PermGen space的全称是Permanent Generation space,是指内存的永久保存区域,这块内存主要是被JVM存放Class和Meta信息的,Class在被Loader时就会被放到PermGen space中,它和存放类实例(Instance)的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理,所以如果你的应用中有很多CLASS的话,就很可能出现PermGen space错误,
这种错误常见在web服务器对JSP进行pre compile的时候。如果你的WEB APP下都用了大量的第三方jar, 其大小超过了jvm默认的大小(4M)那么就会产生此错误信息了。
解决方法: 手动设置MaxPermSize大小
建议:将相同的第三方jar文件移置到tomcat/shared/lib目录下,这样可以达到减少jar 文档重复占用内存的目的。
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值。
解决方法:手动设置Heap size
前两种通常一起进行操作,也就是通过下面的
linux下在catalina.sh文件最前面加入如下语句,这个文件在tomcat -->bin目录下。
JAVA_OPTS='-Xms1024m -Xmx1024m -XX:PermSize=256M -XX:MaxNewSize=512m -XX:MaxPermSize=512m'
通过上面设置后:
tomcat 8.0
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option PermSize=256M; support was removed in 8.0
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=512m; support was removed in 8.0
使用tomcat8.0,把去掉PermSize和MaxPermSize两个参数设置去掉就可以了
JAVA_OPTS="$JAVA_OPTS -server -Xms1024m -Xmx1024m"
查看内存 free –m,详见http://www.cnblogs.com/rosesmall/archive/2012/05/08/2490522.html
空闲内存=free+buffers+cached=total-used
windows
$CATALINA_BASE"”上面加入以下行:
set JAVA_OPTS=%JAVA_OPTS% -server -XX:PermSize=128M-XX:MaxPermSize=512m
linux
一般都是修改TOMCAT_HOME/bin/catalina.sh
在“echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行:
JAVA_OPTS="$JAVA_OPTS -server -Xms1024m -Xmx1024m"
也有说文件最前面加,即位置cygwin=false前
两种方式似乎都可以,还没研究是否有区别
JAVA_OPTS参数说明:
要加“m”说明是MB,否则就是KB了,在启动tomcat时会报内存不足。
$JAVA_OPTS:保留先前设置
-server:一定要作为第一个参数,在多个CPU时性能佳
-Xms:初始Heap大小,使用的最小内存,cpu性能高时此值应设的大一些
-Xmx:java heap最大值,使用的最大内存
上面两个值是分配JVM的最小和最大内存,取决于硬件物理内存的大小,建议均设为物理内存的一半。
相关推荐
- 打开Eclipse,依次选择`Window` -> `Preferences` -> `Server` -> `Runtime Environments`,然后选择对应的Tomcat服务器。 - 在弹出的界面中,选择`Arguments`选项卡,在`VM arguments`栏中输入: ```bash -Xms...
### Tomcat内存溢出在不同系统上的解决方案 #### 一、引言 在部署和运维基于Java的应用程序时,Tomcat作为广泛使用的轻量级Web容器之一,常常会在高负载或资源管理不当的情况下遭遇内存溢出的问题。内存溢出不仅会...
Linux系统下,Tomcat服务器遇到内存溢出问题时,往往是由于Java应用程序的内存管理不当导致的。内存溢出是程序运行过程中的一种常见错误,当程序请求的内存超过了系统分配的最大值时,就会触发该错误。这里我们将...
本文将详细介绍如何利用 Eclipse Memory Analyzer (MAT) 工具来诊断并解决 Tomcat 服务器上的 Java 应用程序内存溢出问题。 #### 二、内存溢出的原因及处理思路 ##### 2.1 内存泄露 - **定义**:内存泄露是指不再...
在Linux环境下运行Tomcat服务器时,经常会遇到与Java虚拟机(JVM)相关的内存溢出问题。这些问题通常表现为`java.lang.OutOfMemoryError`异常,具体又分为两类:`PermGen space`内存溢出和`Java heap space`内存溢出...
然而,在实际部署与运行过程中,Tomcat服务器可能会遇到内存溢出的问题。本文将围绕“Tomcat内存溢出”这一主题,结合提供的描述与部分内容,深入探讨该问题的原因、表现形式以及具体的解决方案。 #### 二、Tomcat...
在进行Web应用程序开发过程中,尤其是在使用Tomcat服务器结合Eclipse或MyEclipse等集成开发环境(IDE)时,开发者可能会遇到一个常见的问题——内存溢出。具体表现为在访问部署的应用程序时出现`java.lang....
标题中的“tomcat内存溢出问题.doc”表明讨论的主题是关于Tomcat服务器遇到的内存溢出(Out Of Memory,OOM)问题,特别是与Java的PermGen空间相关的内存溢出。描述提到,这个问题是因为Tomcat的初始内存设置过小,...
解决Apache服务器或类似应用服务器如Tomcat的内存溢出问题,关键是正确理解问题的根本原因并采取适当的措施进行调整。通过合理设置JVM参数,不仅可以解决内存溢出问题,还可以提高系统的稳定性和性能。此外,对于...
本文将围绕“设置Tomcat启动内存大小”这一主题,深入探讨如何通过修改配置文件来调整Tomcat服务器的内存使用,以满足不同应用场景的需求。 ### Tomcat内存参数详解 在描述中提到的`catalina.sh`脚本中的`JAVA_...
在使用 Tomcat 进行 Web 应用部署时,可能会遇到内存不足的问题,尤其是在启动大型应用或者应用中存在大量缓存数据的情况下,很容易导致 Java 虚拟机(JVM)内存溢出错误。本文将详细介绍如何调整 Tomcat 的内存配置...
内存溢出问题是Tomcat服务器在运行Java应用时经常遇到的故障之一,尤其是在进行大型应用部署或者高负载操作时,不当的内存设置可能会导致Java虚拟机(JVM)无法满足运行时内存需求,最终引发java.lang....
在使用Tomcat服务器部署Java Web应用时,可能会遇到一个常见的问题:内存溢出错误。这种情况通常发生在服务器资源不足或应用消耗内存过大时。为了解决这个问题,我们需要合理地调整Tomcat的内存参数。 #### 二、...
本文将介绍在Linux和Windows系统环境下针对Tomcat服务器的几种实用内存溢出解决方案,并特别关注不同启动方式下的配置差异。 #### Tomcat内存配置详解 **1. Linux环境配置** - 在`catalina.sh`文件顶部添加以下...
在 Linux 下,如果 Tomcat 出现内存溢出错误,我们需要在 Tomcat 的 bin 目录下的 Catalina.sh 文件中添加以下配置信息: * -Xms512m:指定初始堆大小为 512MB。 * -Xmx1024m:指定最大堆大小为 1024MB。 这样可以...
关于Linux和Windows操作系统中如何修改Tomcat服务器的内存设置,我们可以从JVM提供的几个关键参数入手,这些参数分别是-Xms、-Xmx和-Xmn。这几个参数允许用户控制Java虚拟机的内存分配情况。 -Xms参数用来设置JVM...
如果遇到项目无法访问的问题,可以检查hosts文件,添加Context标签来指定项目路径,并调整Tomcat的配置以解决内存溢出问题。例如,增加`JAVA_OPTS`来增大 PermSize 和 MaxPermSize。 接下来,我们需要安装Nginx作为...
本文将深入探讨Tomcat动态内存参数的配置方法及其重要性,旨在帮助IT专业人士更好地理解和优化Tomcat服务器性能。 ### Tomcat动态内存参数配置的重要性 Tomcat作为Apache基金会旗下的一个开源项目,主要功能是作为...
通过对Tomcat进行合理的内存优化,不仅可以有效解决内存溢出问题,还可以显著提高应用的性能和稳定性。实践中,应根据具体情况灵活调整JVM参数,确保既能满足应用需求,又能充分利用硬件资源。同时,建议定期监控...