`
shinepaopao
  • 浏览: 145261 次
社区版块
存档分类
最新评论

Tomcat运行Java Web内存溢出总结

    博客分类:
  • Java
阅读更多

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

  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%

14
26
分享到:
评论

相关推荐

    tomcat_eclipse配置内存溢出

    在进行Web应用程序开发过程中,尤其是在使用Tomcat服务器结合Eclipse或MyEclipse等集成开发环境(IDE)时,开发者可能会遇到一个常见的问题——内存溢出。具体表现为在访问部署的应用程序时出现`java.lang....

    JAVA内存溢出

    JAVA内存溢出 JAVA中OutOfMemoryError(内存溢出)的三种情况及解决办法 Java中的OutOfMemoryError(内存溢出)是一种常见的错误,本文将详细介绍OutOfMemoryError的三种情况及其解决方法。 首先,我们需要了解...

    myeclipse-tomcat jdk内存溢出

    在使用MyEclipse进行Java Web开发时,经常会遇到Tomcat服务器启动后出现JVM内存溢出的问题。这种情况通常表现为应用程序运行过程中突然崩溃,并伴随着错误提示:“OutOfMemoryError”。这种错误不仅会影响开发效率,...

    Eclipse + Tomcat 内存溢出参数设置

    在Java开发过程中,特别是在使用Eclipse作为集成开发环境(IDE)并结合Apache Tomcat服务器进行Web应用开发时,经常会遇到内存溢出的问题。这类问题通常表现为应用程序运行过程中出现OutOfMemoryError(OOM)错误,...

    JVM内存溢出问题解析

    JVM 内存溢出是指程序运行所需的内存大于虚拟机能提供的最大内存的情况。这种情况可能是由于数据量过大、死循环、静态变量和静态方法过多、递归、无法确定是否被引用的对象等原因引起的。同时,虚拟机不回收内存...

    tomcat内存溢出总结(2013年)

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

    Tomcat内存溢出的解决方法(java.util.concurrent.ExecutionException)

    在Java应用服务器中,Tomcat是一个非常常见的轻量级选择,尤其在开发和部署Web应用程序时。然而,如同任何其他程序一样,Tomcat也可能遇到内存管理问题,导致内存溢出。"java.util.concurrent.ExecutionException: ...

    数据库更新工具+tomcat内存溢出解决办法+birt

    Tomcat是Apache软件基金会的一个开源项目,作为一个流行的Java Servlet容器,它常用于部署和运行Java Web应用程序。内存溢出问题(Out of Memory Error,OOME)在高负载或长时间运行的环境中常见,通常是由于内存...

    解决jetty8内存溢出版本

    6. **升级或切换版本**:如果Jetty 8的内存溢出问题难以解决,可以考虑升级到更稳定或内存管理更优化的版本,如Jetty 9或更高版本,或者考虑使用其他Web服务器,如Tomcat。 7. **使用G1垃圾收集器**:G1(Garbage ...

    关于tomcat乱码以及tomcat jvm 内存溢出问题的解决方案和理论

    标题中的“关于tomcat乱码以及tomcat jvm 内存溢出问题的解决方案和理论”涉及了两个关键的IT概念:Tomcat服务器的字符编码问题和Java虚拟机(JVM)内存管理的问题。让我们逐一深入探讨这两个主题。 首先,我们来...

    tomcat内存溢出在不同系统上各种详细的解决方案

    在部署和运维基于Java的应用程序时,Tomcat作为广泛使用的轻量级Web容器之一,常常会在高负载或资源管理不当的情况下遭遇内存溢出的问题。内存溢出不仅会导致服务不可用,还可能引发系统崩溃。因此,了解并掌握如何...

    tomcat内存溢出

    Tomcat服务器在运行过程中如果出现`java.lang.OutOfMemoryError: Java heap space`错误提示,则表明服务器遇到了堆内存溢出的问题。这是一种常见的性能瓶颈,通常出现在系统负载较高或内存管理不当的情况下。 #### ...

    如何配置Tomcat的JVM虚拟机内存大小

    Tomcat作为一款流行的开源Java Servlet容器,用于部署和运行基于Java的Web应用。然而,Tomcat自身并不直接运行在计算机硬件上,而是依赖于操作系统和Java虚拟机(JVM)。JVM为Tomcat提供了运行环境,使其能够解释和...

    Eclipse内存溢出

    Eclipse主要用于编写Java代码,而Tomcat则是一个用于部署Java Web应用的轻量级容器。两者都可以通过调整内存配置来解决内存溢出问题。 #### 三、Eclipse内存配置 对于Eclipse IDE本身而言,可以通过以下步骤来调整...

    myeclipse内存溢出问题

    - 对于Web应用,如果在部署到Tomcat服务器上时仍然出现内存溢出问题,还需要调整Tomcat的JVM参数。 - 修改Tomcat安装目录下的`bin`文件夹中的`catalina.bat`文件,在`set JAVA_OPTS=`这一行添加或修改如下内容: ...

    linux解决Tomcat内存溢出的问题

    Linux系统下,Tomcat服务器遇到内存溢出问题时,往往是由于Java应用程序的内存管理不当导致的。内存溢出是程序运行过程中的一种常见错误,当程序请求的内存超过了系统分配的最大值时,就会触发该错误。这里我们将...

    解决OutOfMemoryError内存溢出

    - 如果应用程序运行时需要更多的内存资源而JVM初始分配的内存过小,则可能导致OOM。 2. **程序设计不当导致内存泄漏**: - 程序中如果存在不再使用的对象未能被垃圾回收机制及时清理,长期累积会导致内存耗尽。 ...

Global site tag (gtag.js) - Google Analytics