`
cumtheima
  • 浏览: 255134 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Tomcat内存溢出总结(2)

阅读更多

 如果JVM里运行的程序, 它的内存堆和持久存储区域的都满了,这个时候程序还想创建对象实例的话,垃圾收集器就会启动,试图释放足够的内存来创建这个对象。这个时候如果垃圾收集器 没有能力释放出足够的内存,它就会抛出OutOfMemoryError内存溢出错误。

 SUN JVM的内存管理方式:
  SUN的JVM是类似人类家族,也就是在一个地方创建对象,在它长期占据空间之前给它多次死亡的机会,SUN JVM会划分为:
1.  年轻的一代(Young generation),包括EDEN和2个幸存者空间(出发地和目的地the From space and the To space)
2.  老一代(Old generation) 
3.  永久的一代(Permanent generation)

Java虚拟机的运行时数据区一般分类如下(不一定是物理划分):

1.   堆:主要存放对象实例,线程共享

2.   栈:主要存储特定线程的方法调用状态,线程独占

3.   本地方法栈:存储本地方法的调用状态,线程独占

4.   PC寄存器:学过操作系统课程的都知道,线程独占

5.   方法区:主要存储了类型信息,线程共享

因此,在抛出内存溢出错误的时候,一般都会提示内存泄露的种类,一般也都是按照区域进行划分:

1.   堆(heap)内存泄漏java.lang.OutOfMemoryError: Javaheap space:大家都比较熟悉 ,通过设置-Xms2048m -Xmx4096m可以解决

2.   栈(stack)内存泄漏:当前线程运行期间维护的中间变量等信息过多,例如常见的死循环引起stack over flow

3.   方法区(permanent heap)内存泄漏,即java.lang.OutOfMemoryError: PermGen space:发生的原因和类型装载、类型卸载有直接的关系,

        通过设置-XX:MaxNewSize=256m -XX:MaxPermSize=256m可以解决。

     一般情况下,当服务器内存过小,而提供了大量的访问服务时,可能会缓存过多的数据对象造成堆内存溢出,当web应用不断扩大,加载的lib库达到一定大小(4M)后,

就容易报PermGen OOM,也就是方法区溢出。

 

在Linux服务器中将参数写入环境变量:

export CATALINA_OPTS="-Xms2048m -Xmx4096m"

export JAVA_OPTS="-XX:MaxNewSize=256m -XX:MaxPermSize=256m"

 

Xmx 最大不要超过服务器物理内存的80%

1
0
分享到:
评论

相关推荐

    tomcat内存溢出总结

    ### Tomcat内存溢出总结 在生产环境部署和运行基于Java的应用时,合理配置Tomcat服务器的内存参数至关重要。不当的内存配置不仅可能导致应用性能下降,严重时甚至会引起服务不可用的问题。本文将针对常见的几种内存...

    tomcat内存溢出总结(2013年)

    Tomcat内存溢出是Java应用程序中常见的问题,尤其是在运行大型Web应用程序时。内存溢出会导致系统性能下降,甚至服务崩溃。以下是对Tomcat内存溢出的三种常见类型的详细解释及解决策略。 1. OutOfMemoryError: Java...

    一次使用Eclipse Memory Analyzer分析Tomcat内存溢出

    ### Eclipse Memory Analyzer (MAT) 分析 Tomcat 内存溢出详解 #### 一、引言 在软件开发过程中,特别是在 Java 应用程序中,内存管理是非常关键的一环。当应用程序遭遇 `OutOfMemoryError` 异常时,通常意味着...

    tomcat内存溢出

    ### Tomcat内存溢出问题详解 #### 一、引言 在Java Web应用服务器领域,Apache Tomcat是一款非常流行的开源Web容器,它以其轻量级、高性能和稳定性著称。然而,在实际部署与运行过程中,Tomcat服务器可能会遇到...

    有关tomcat内存溢出的完美解决方法

    为了解决Tomcat内存溢出的问题,开发者需要对JVM内存分配有深入的理解,并且能够在不同操作系统环境中灵活设置JAVA_OPTS参数。通过合理分配初始堆内存(-Xms)和最大堆内存(-Xmx)的大小,并根据实际情况调整年轻代...

    MyEclipse下tomcat日志输出和内存溢出解决方法.doc

    2. **永久代内存溢出**:永久代主要用于存放类元数据,当加载的类过多时,也可能导致内存不足。 #### 三、解决方案 ##### 3.1 增加JVM参数配置 为了有效地避免内存溢出问题,可以通过修改Tomcat服务器的启动脚本...

    TOMCAT内存大小调整

    "TOMCAT内存大小调整" TOMCAT内存大小调整是指在使用Java程序从数据库中查询大量数据或应用服务器(如Tomcat、JBoss、WebLogic)加载jar包时,出现java.lang.OutOfMemoryError异常的解决方法。这种异常主要是由于...

    myeclipse内存溢出问题解决方案

    总结来说,解决MyEclipse内存溢出问题需要理解Java内存模型和JVM参数设置,合理分配堆内存、新生代和永久代的大小。通过监控和调整这些参数,可以有效地避免内存溢出问题,提升应用的稳定性和性能。

    tomcat溢出解决建议方案

    【Tomcat内存溢出解决建议方案】 在Windows Server 2003 32位操作系统上运行的Tomcat Web应用程序经常遇到内存溢出问题,这种现象表现为溢出发生后重启Tomcat,但在大约一个月后再次出现。内存溢出的原因多种多样,...

    Tomcat内存优化

    ### Tomcat内存优化详解 #### 一、引言 在Java Web应用开发中,Apache Tomcat作为一款轻量级的应用服务器被广泛使用。然而,在实际部署和运行过程中,经常会遇到性能瓶颈,其中最常见的问题之一就是内存溢出异常,...

    tomcat服务内存扩大.docx

    描述中提到的“winserver tomcat注册成服务修改内存大小,解决tomcat内存溢出”,意味着在Windows Server操作系统上,Tomcat被配置为一个系统服务运行,这样可以确保服务器启动时自动启动Tomcat。然而,这种配置方式...

    Tomcat JVM内存优化(Linux环境)

    在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内存溢出的解决方法

    总结来说,解决由JSP页面引发的Tomcat内存溢出问题,通常需要从控制session的生命周期、调整JSP页面行为,以及优化应用配置等多方面进行。合理配置Web容器和应用程序,以及适时的监控和分析,是避免内存溢出的有效...

Global site tag (gtag.js) - Google Analytics