第二种:永久保存区域溢出
PermGen space的全称是Permanent Generation space,是指内存的永久保存区域。这一部分用于存放Class和Meta的信息,Class在被 Load的时候被放入PermGen space区域,它和和存放Instance的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理,所以如果你的APP会LOAD很多CLASS的话,就很可能出现PermGen space错误。这种错误常见在web服务器对JSP进行pre compile的时候。但目前的hibernate和spring项目中也很容易出现这样的问题。http://www.iteye.com/topic/80620?page=1 的帖子有讨论的这个问题。可能是由于这些框架会动态class,而且jvm的gc是不会清理PemGen space的,导致内存溢出。
这一个一般是加大-XX:PermSize -XX:MaxPermSize 来解决问题。
-XX:PermSize 永久保存区域初始大小
-XX:PermSize 永久保存区域初始最大值
这一般结合第一条使用,比如 set JAVA_OPTS= -Xms1024m -Xmx1024m -XX:PermSize=128M -XX:PermSize=256M
有一点需要注意:java -Xmx***M version 命令来测试的最大堆内存是 -Xmx与 -XX:PermSize的 和 比如系统支持最大的jvm堆大小事1.5G,那 -Xmx1024m -XX:PermSize=768M 是无法运行的。
第三种:无法创建新的线程。
这种现象比较少见,也比较奇怪,主要是和jvm与系统内存的比例有关。
这种怪事是因为JVM已经被系统分配了大量的内存(比如1.5G),并且它至少要占用可用内存的一半。有人发现,在线程个数很多的情况下,你分配给JVM的内存越多,那么,上述错误发生的可能性就越大。
产生这种现象的原因如下(从这个blog中了解到原因:http://hi.baidu.com/hexiong/blog/item/16dc9e518fb10c2542a75b3c.html):
分享到:
相关推荐
### Tomcat内存溢出总结 在生产环境部署和运行基于Java的应用时,合理配置Tomcat服务器的内存参数至关重要。不当的内存配置不仅可能导致应用性能下降,严重时甚至会引起服务不可用的问题。本文将针对常见的几种内存...
Tomcat内存溢出是Java应用程序中常见的问题,尤其是在运行大型Web应用程序时。内存溢出会导致系统性能下降,甚至服务崩溃。以下是对Tomcat内存溢出的三种常见类型的详细解释及解决策略。 1. OutOfMemoryError: Java...
### Eclipse Memory Analyzer (MAT) 分析 Tomcat 内存溢出详解 #### 一、引言 在软件开发过程中,特别是在 Java 应用程序中,内存管理是非常关键的一环。当应用程序遭遇 `OutOfMemoryError` 异常时,通常意味着...
### Tomcat内存溢出问题详解 #### 一、引言 在Java Web应用服务器领域,Apache Tomcat是一款非常流行的开源Web容器,它以其轻量级、高性能和稳定性著称。然而,在实际部署与运行过程中,Tomcat服务器可能会遇到...
为了解决Tomcat内存溢出的问题,开发者需要对JVM内存分配有深入的理解,并且能够在不同操作系统环境中灵活设置JAVA_OPTS参数。通过合理分配初始堆内存(-Xms)和最大堆内存(-Xmx)的大小,并根据实际情况调整年轻代...
2. **永久代内存溢出**:永久代主要用于存放类元数据,当加载的类过多时,也可能导致内存不足。 #### 三、解决方案 ##### 3.1 增加JVM参数配置 为了有效地避免内存溢出问题,可以通过修改Tomcat服务器的启动脚本...
"TOMCAT内存大小调整" TOMCAT内存大小调整是指在使用Java程序从数据库中查询大量数据或应用服务器(如Tomcat、JBoss、WebLogic)加载jar包时,出现java.lang.OutOfMemoryError异常的解决方法。这种异常主要是由于...
总结来说,解决MyEclipse内存溢出问题需要理解Java内存模型和JVM参数设置,合理分配堆内存、新生代和永久代的大小。通过监控和调整这些参数,可以有效地避免内存溢出问题,提升应用的稳定性和性能。
【Tomcat内存溢出解决建议方案】 在Windows Server 2003 32位操作系统上运行的Tomcat Web应用程序经常遇到内存溢出问题,这种现象表现为溢出发生后重启Tomcat,但在大约一个月后再次出现。内存溢出的原因多种多样,...
描述中提到的“winserver tomcat注册成服务修改内存大小,解决tomcat内存溢出”,意味着在Windows Server操作系统上,Tomcat被配置为一个系统服务运行,这样可以确保服务器启动时自动启动Tomcat。然而,这种配置方式...
### Tomcat内存优化详解 #### 一、引言 在Java Web应用开发中,Apache Tomcat作为一款轻量级的应用服务器被广泛使用。然而,在实际部署和运行过程中,经常会遇到性能瓶颈,其中最常见的问题之一就是内存溢出异常,...
在Linux环境下运行Tomcat服务器时,经常会遇到与Java虚拟机(JVM)相关的内存溢出问题。这些问题通常表现为`java.lang.OutOfMemoryError`异常,具体又分为两类:`PermGen space`内存溢出和`Java heap space`内存溢出...
#### Tomcat内存配置详解 **1. Linux环境配置** - 在`catalina.sh`文件顶部添加以下配置: ```sh JAVA_OPTS="-server –Xms1024m –Xmx2048m -XX:PermSize=128M -XX:MaxPermSize=512m -XX:-UseGCOverheadLimit" ...
总结来说,解决由JSP页面引发的Tomcat内存溢出问题,通常需要从控制session的生命周期、调整JSP页面行为,以及优化应用配置等多方面进行。合理配置Web容器和应用程序,以及适时的监控和分析,是避免内存溢出的有效...