程序在tomcate中运行一段时间内存一直在往上涨不下来。后台也不报错,没有任何异常。程序中能close或者distroy的东西都释放掉了,程序运行一段时间tomcat自动停止运行,在server中看到的tomcat停止了。这个程序就是图片处理的,图片的处理最后也会把图片销毁掉的,内存应该会释放。不知道问题在哪,内存一直飙升不降的原因有哪些,如果JVM内存溢出也应该会报错。请给我详细解决方案或者可能性

解决方案 »

  1.   

    看看日志有没有异常,或者使用工具监控下。比如JProfiler
      

  2.   

    日志没有错误,tomcat自动停止任务了晕,如果用工具查看怎么看
      

  3.   

    1. Tomcat 的server.xml中,有些东西需要配置(根据实际情况)<Connector port="8080" URIEncoding="UTF-8" protocol="HTTP/1.1"
    minSpareThreads="5" maxSpareThreads="300"
    enableLookups="false" 
    disableUploadTimeout="true"
    connectionTimeout="30000"
    compression="on" 
    compressionMinSize="2048" compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"
    acceptCount="300"  
    maxThreads="500" 
    maxProcessors="300" 
    minProcessors="5"
    useURIValidationHack="false"
        redirectPort="8080" />2. Catalina.bat文件中需要加入一些JVM优化参数    set JAVA_OPTS=-server -Xms1928M -Xmx1928M -Xss512k -XX:+AggressiveOpts -XX:+UseParallelGC  -XX:+UseBiasedLocking -XX:PermSize=256M -XX:MaxPermSize=512M以上各参数需根据实际情况进行配置另外,提一句,-server参数加和不加区别太大,可能有近10倍的效能
      

  4.   

    tomcat 配置问题 和你的数据库持久化用地连接池有关系
      

  5.   

    1、配置JVM参数及Tomcat配置,如楼上网友所说
    2、仔细观察,或是用一些工具观察,代码是否存在内存泄露,如Findbugs
    3、VisualVM 导出的二进制堆文件,用MAT观察,参考http://shoushou2001.iteye.com/admin/blogs/1098000