在做一个大型项目的时候,做了很久以后发现程序跑个3天就死掉了,报错java.lang.OutOfMemary查了很久 不知道怎么解决 有没有高手给我指点下,我用了jprofile跟踪,但是效果不怎么好,关于我自己的包里的类没有怎么用,用的最多的是java.lang.String,之类的。

解决方案 »

  1.   

    log你所有的对象的大小,看outofmemory时,那个很大了
      

  2.   

      我以前也碰到过,我那次报这个问题是因为sql语句出问题了啊。
        你一步步debug下,看是不是也是dao出问题了
       debug把报错的代码贴出来吧,这样大家也好帮你解决啊
      

  3.   

    2009-6-11 18:55:28 org.apache.catalina.core.ContainerBase$ContainerBackgroundPro
    cessor processChildren
    严重: Exception invoking periodic operation:
    java.lang.OutOfMemoryError: Java heap space
    jt.SQLPl.getConn(),conn=true,freeConns=0,usedConns=1
    jt.SQLPl.freeConn(),freeConns=1,usedConns=0
    Exception in thread "Timer-2" java.lang.OutOfMemoryError: Java heap space
    2009-6-11 19:04:29 org.apache.catalina.core.ContainerBase$ContainerBackgroundPro
      

  4.   


    $CATALINA_HOME/bin下,编辑catalina.sh(Windows服务器的话catalina.bat),
    定义里面的JAVA_OPTS,加上-Xmx定义
    例如,让启动Tomcat得JVM使用512m内存可以加上如下定义
    export JAVA_OPTS=$JAVA_OPTS -Xmx512m
      

  5.   

    具体分给tomcat多少内存,主要看服务器硬件性能和各个服务的使用状况。Java的Web程序占用内存相对很大,如果还不行,就需要考虑Tomcat的集群。