`
Xsen
  • 浏览: 138529 次
  • 性别: Icon_minigender_1
  • 来自: 贵阳
社区版块
存档分类
最新评论

解决Tomcat应用的内存溢出问题

    博客分类:
  • Java
阅读更多

维护一个老系统,发现有java.lang.OutOfMemoryError: Java heap space的情况,内存溢出,以下是大致的解决过程:

1.安装JProfiler,并配置成监控本地的tomcat

2.修改catalina.bat,添加参数: set JAVA_OPTS= -Xms768m -Xmx1024m -verbose:gc -Xloggc:../logs/gclog.log -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintHeapAtGC -XX:+PrintTenuringDistribution -XX:+HeapDumpOnOutOfMemoryError %JAVA_OPTS%

3.使用JProfiler在Tomcat的bin目录下创建的启动脚本startup_jprofiler.bat重启tomcat

4.运行JProfiler观察内存状况,未发现问题

5.第二天突然发现Tomcat再次出现内存溢出,Tomcat的bin目录下自动生成了java_pid107932.hprof文件,将此文件下载到本地,以便分析。

6.下载Memory Analyzer工具,然后打开该hprof文件进行分析,发现是SmartUpload的问题:com.jspsmart.upload.Files占用内存1G多。

7.用Apache的上传组件替换掉smartupload,目前没有发现问题

 

附上Memory Analyzer分析的图片:

 

Leak Suspects显示,有一个东西占了1007.9M的内存:

内存状态图1

 

 

 点击底部的Details链接,发现是com.jspsmart.upload.Files占用内存最多:

内存状态图2

 

 

  • 大小: 72.4 KB
  • 大小: 138.2 KB
分享到:
评论
12 楼 it2010 2010-06-29  
楼主可以在Tomcat里面配置永久内存可以解决此问题!通常都在比较大型的网站会出现此问题,小的网站基本不太会碰到。
11 楼 Xsen 2010-06-29  
那是因为你忽略了第二步的设置。
10 楼 chengkun 2010-06-22  
3.使用JProfiler在Tomcat的bin目录下创建的启动脚本startup_jprofiler.bat重启tomcat

4.运行JProfiler观察内存状况,未发现问题

5.第二天突然发现Tomcat再次出现内存溢出,Tomcat的bin目录下自动生成了java_pid107932.hprof文件,将此文件下载到本地,以便分析。

请问楼主, 通过第三步 操作后 ,如果 内存溢出,就会生成 .hprof 文件么?

我是直接 通过jprofiler 配置后启动,进行监控的。最后 jprofiler 只会报错: disconnect. 并没有生成文件。


现在的做法是: 我按照第三点:启动了startup_jprofiler.bat ,然后启动 tomcat ,看看能不能生成 .hprof 文件。
9 楼 Xsen 2009-11-30  
linzy410 写道
在tomcat还在运行的时候监控内存,可以看出是哪个类、哪个线程内存溢出了,不用搞这么麻烦


是的,一开始我也是用JProfiler监控,但当时估计是没有遇到用户上传文件,没有发现问题。第二天发现时tomcat已经down掉了,于是利用输出的文件查看了一下。。。
8 楼 Xsen 2009-11-30  
魔力猫咪 写道
没看到解决方案呀。只看到找到了问题


呵呵,解决方案就是替换掉smartupload,我使用的是使用Apache的上传组件
7 楼 makemyownlife 2009-11-30  
我再使用ibatis 处理 大字段的时候上传 ,服务器使用tomcat,上传文件小的情况下不出问题,但是文件大了,报的也是这个异常,不知道各位有什么好的解决方法?
6 楼 linzy410 2009-11-30  
在tomcat还在运行的时候监控内存,可以看出是哪个类、哪个线程内存溢出了,不用搞这么麻烦
5 楼 treblesoftware 2009-11-29  
写IO的时候CLOSE没关?
4 楼 lixjluck 2009-11-29  
是使用内存模式上传文件?
我猜想应该是,而且对上传文件做完处理后,没有及时删除文件。加上这个,应该就没问题了。
3 楼 javatestoracle 2009-11-29  
上传文件,应该结合硬盘空间来使用,否则很容易出现outofmemory,我认为增加JVM的内存空间虽然是个办法,但不是最好的solution。
2 楼 taupo 2009-11-28  
同意楼上,不过找到了问题所在,基本上完成了一半了
1 楼 魔力猫咪 2009-11-28  
没看到解决方案呀。只看到找到了问题

相关推荐

    TOMCAT内存溢出之解决方法

    本文将详细介绍Tomcat内存溢出之解决方法,包括问题分析、解决方法和结论。 问题分析: Tomcat内存溢出是由于JVM的虚拟内存默认为128M,当超过这个值时就把先前占用的内存释放,而导致出现HTTP500的错误。当用户...

    解决tomcat内存溢出的配置方法

    本篇将详细介绍如何解决Tomcat内存溢出的问题,以及如何进行相应的配置优化。 首先,我们需要理解什么是内存溢出。当一个程序在运行过程中,分配给它的内存不足以存储所有数据时,就会发生内存溢出。在Java环境中,...

    myeclipse-tomcat jdk内存溢出

    ### MyEclipse-Tomcat JDK 内存溢出问题及解决方案 #### 一、问题概述 在使用MyEclipse进行Java Web开发时,经常会遇到Tomcat服务器启动后出现JVM内存溢出的问题。这种情况通常表现为应用程序运行过程中突然崩溃,...

    eclipse tomcat启动,内存溢出问题

    ### Eclipse Tomcat 启动时出现内存溢出问题解析及解决方法 #### 一、问题背景与概述 在使用Eclipse集成开发环境部署并运行基于Tomcat的应用程序时,经常会出现“java.lang.OutOfMemoryError: Java heap space”这...

    JVM内存溢出问题解析

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

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

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

    java excel导出tomcat内存溢出处理方法

    4. **使用工具辅助诊断**:可以利用JVisualVM等工具来监控和分析Java应用程序的内存使用情况,及时发现并解决问题。 综上所述,通过合理配置JVM参数,可以在很大程度上避免Tomcat服务器上的Java应用出现内存溢出的...

    Eclipse + Tomcat 内存溢出参数设置

    ### Eclipse + Tomcat 内存溢出参数设置详解 在Java开发过程中,特别是在使用Eclipse作为集成开发环境(IDE)并结合...通过以上步骤,可以有效地解决Eclipse和Tomcat中的内存溢出问题,提高系统的稳定性和响应速度。

    myeclipse内存溢出问题解决方案

    内存溢出问题在Java开发中是一个常见的问题,尤其是在使用集成开发环境如MyEclipse时,由于资源消耗较大,可能会频繁出现。...通过监控和调整这些参数,可以有效地避免内存溢出问题,提升应用的稳定性和性能。

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

    本文将详细介绍如何利用 Eclipse Memory Analyzer (MAT) 工具来诊断并解决 Tomcat 服务器上的 Java 应用程序内存溢出问题。 #### 二、内存溢出的原因及处理思路 ##### 2.1 内存泄露 - **定义**:内存泄露是指不再...

    使用MAT分析Tomcat内存溢出

    在Java开发过程中,Tomcat作为常用的Java应用服务器,有时会遇到内存溢出(Out Of Memory,OOM)的问题,这可能导致应用程序崩溃或者性能急剧下降。内存溢出问题的排查和解决是一项重要的技能。本文将详细讲解如何...

    tomcat内存溢出问题.doc

    标题中的“tomcat内存溢出问题.doc”表明讨论的主题是关于Tomcat服务器遇到的内存溢出(Out Of Memory,OOM)问题,特别是与Java的PermGen空间相关的内存溢出。描述提到,这个问题是因为Tomcat的初始内存设置过小,...

    解决jetty8内存溢出版本

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

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

    因此,了解并掌握如何解决Tomcat内存溢出问题对于确保应用程序的稳定运行至关重要。 #### 二、Tomcat内存溢出的三种常见类型及其原因 根据文档内容,Tomcat内存溢出大致可以分为以下三种情况: 1. **...

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

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

    apache服务器出现内存溢出的解决方法.doc

    解决Apache服务器或类似应用服务器如Tomcat的内存溢出问题,关键是正确理解问题的根本原因并采取适当的措施进行调整。通过合理设置JVM参数,不仅可以解决内存溢出问题,还可以提高系统的稳定性和性能。此外,对于...

Global site tag (gtag.js) - Google Analytics