欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2024-02-03 13:05:52
...

维护一个老系统,发现有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的内存:

解决Tomcat应用的内存溢出问题
            
    
    博客分类: Java Tomcat应用服务器iBATIS多线程脚本 

 

 

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

解决Tomcat应用的内存溢出问题
            
    
    博客分类: Java Tomcat应用服务器iBATIS多线程脚本 

 

 

  • 解决Tomcat应用的内存溢出问题
            
    
    博客分类: Java Tomcat应用服务器iBATIS多线程脚本 
  • 大小: 72.4 KB
  • 解决Tomcat应用的内存溢出问题
            
    
    博客分类: Java Tomcat应用服务器iBATIS多线程脚本 
  • 大小: 138.2 KB