今天,依旧照往常一样.打开IDE, 启动tomcat, 等了大概3分钟左右, tomcat 还没启动完毕.起初也没觉得有什么奇怪的地方.
于是,又等了几分钟. tomcat还是一样. 似乎挂起在那里, 动也不动, 死机了一样..
重启之后, 结果依旧.. 于是, 换了个版本试了一下(原来的是5.5,换成6.0的),
但还是一样. 然后我通过startup.bat 启动, 这回可以了启动完毕了, 但我只访问了一个jsp页面(里面只写了些HTML代码),
内存溢出了,我在想, 是不是IDE坏了, 我卸了IDE, 又重装了一下.. 然后再叫同事把最新的代码给我,, 这次可以启动了,,
访问一个jsp页面不会内存溢出了, 但是我一提交一个请求, 又内存溢出了, 我在想是不是代码上的问题, 叫同事也运行一下,
但她的丝毫没有问题...
接着我试着加大tomcat 的虚拟内存,
但还是一样....
搞死我了...
请问哪位大侠有遇见过类似的问题,,
很急很急...

解决方案 »

  1.   

    为什么不独立于 ide 运行呢? 把应用程序直接打包到 相关的目录下
      

  2.   

    你在项目里面是不是大量使用了string?很有可能是你太多对象的引用,导致内存不足了。
      

  3.   

    今天以为是不是系统的问题, 于是重新ghost 一下系统, 所有的工具都重新安装了.
    本以为可以解决,
    但结果依旧.. 这次的结果是: 可以启动, 可以访问一个jsp页面, 但一提交请求到do上..
    哎.... 内存溢出了....
    真不知道该如何是好...
      

  4.   

    如果是eclipse设置下内存大小
    tomcat配置里 OPtional java VM arguments
    -Xms256m -Xmx512m
      

  5.   

    我在上面也说过了,
    现在的结果是:
        换了几次新的tomcat,
        加大tomcat内存,
        重装所有的东西,
        重装了系统..结果依旧............
      

  6.   

    接着我试着加大tomcat 的虚拟内存, 你怎么加大的? 虚拟内存? 呵呵!建议你单独启动tomcat,不要集成环境启动。
      

  7.   


    应该有可能是系统的bug引起的。 
    我在自己的电脑(640M内存)上用tomcat6.0部署6个系统,还要运行一个oracle数据库。。 
    同时10个操作都没有出现内容溢出的问题。 
      

  8.   

    我也脱离过集成环境启动tomcat, 
    就是可以启动, 但访问就内存溢出..
      

  9.   

    1. 你机器的内存有多少?
    2. Tomcat启动后,内存还剩多少?
    3. “但访问就内存溢出...”,访问是什么应用?溢出的现象可否描述一下?看了上面大家为你支的招,按照道理不应该在出现那种情况的,再说Tomcat启动的时候需要的内存并不是很大的。
    你碰到的情况的确很古怪,难道是RPWT?
      

  10.   

    你说tomcat 已经重装了
    版本也换过重装也不行
    但是在其他同事机器上就可以运行
    你的tomcat 内存已经增大了还出现这个问题
    我个人认为觉得是你系统的bug
      

  11.   

    说得不是很清楚
      看看这下面  按照这去处理一,java.lang.OutOfMemoryError: Java heap space 
    JVM堆的设置是指java程序运行过程中JVM可以调配使用的内存空间的设置.JVM在启动的时候会自动设置Heap size的值,其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4。可以利用JVM提供的-Xmn -Xms -Xmx等选项可进行设置。Heap size 的大小是Young Generation 和Tenured Generaion 之和。 
    提示:在JVM中如果98%的时间是用于GC且可用的Heap size 不足2%的时候将抛出此异常信息。 
    提示:Heap Size 最大不要超过可用物理内存的80%,一般的要将-Xms和-Xmx选项设置为相同,而-Xmn为1/4的-Xmx值。 解决方法: 手动设置Heap size 
    修改TOMCAT_HOME/bin/catalina.bat,在“echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行: 
    Java代码 
    set JAVA_OPTS=%JAVA_OPTS% -server -Xms800m -Xmx800m -XX:MaxNewSize=256m   
    view plaincopy to clipboardprint?
    set JAVA_OPTS=%JAVA_OPTS% -server -Xms800m -Xmx800m -XX:MaxNewSize=256m   
    set JAVA_OPTS=%JAVA_OPTS% -server -Xms800m -Xmx800m -XX:MaxNewSize=256m 或修改catalina.sh 
    在“echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行: 
    JAVA_OPTS="$JAVA_OPTS -server -Xms800m -Xmx800m -XX:MaxNewSize=256m"  二,java.lang.OutOfMemoryError: PermGen space 原因: PermGen space的全称是Permanent Generation space,是指内存的永久保存区域,这块内存主要是被JVM存放Class和Meta信息的,Class在被Loader时就会被放到PermGen space中,它和存放类实例(Instance)的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理,所以如果你的应用中有很CLASS的话,就很可能出现PermGen space错误,这种错误常见在web服务器对JSP进行pre compile的时候。如果你的WEB APP下都用了大量的第三方jar, 其大小超过了jvm默认的大小(4M)那么就会产生此错误信息了。 解决方法: 1. 手动设置MaxPermSize大小 
    修改TOMCAT_HOME/bin/catalina.bat(Linux下为catalina.sh),在 Java代码 
    “echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行:     
    set JAVA_OPTS=%JAVA_OPTS% -server -XX:PermSize=128M -XX:MaxPermSize=512m   
    view plaincopy to clipboardprint?
    “echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行:     
    set JAVA_OPTS=%JAVA_OPTS% -server -XX:PermSize=128M -XX:MaxPermSize=512m   
    “echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行: 
    set JAVA_OPTS=%JAVA_OPTS% -server -XX:PermSize=128M -XX:MaxPermSize=512m catalina.sh下为: 
    Java代码 
    JAVA_OPTS="$JAVA_OPTS -server -XX:PermSize=128M -XX:MaxPermSize=512m" 
      

  12.   

    有几个可能
    1、log4j输出级别改为ERROR2、Tomcat和ide是不是用的同一个JAVA_HOME3、是不是重复加载了applicationContetx.xml【所谓重复是指是否用ClassPath加载的xml,而你的xml文件比较大】
      

  13.   

    是不是你改了tomcat的配制文件啊,还是你的内存不够用啊,eclipse点用内存很大的,512经常出现内存溢出的
      

  14.   

    用命令行 jconsole 看下
    死在那个线程了
      

  15.   

    先别那么肯定地说不是代码问题,依我看八成就是代码问题.
    用一些工具可以将内存dump下来,然后通过一些工具可以分析这些dump文件,看看溢出时到底是哪个对象最多,然后看一下创建这个对象后相关的代码是不是没有释放资源.
    Java dump,也叫做 Thread dump,是 JVM 故障诊断中最重要的转储文件之一。JVM 的许多问题都可以使用这个文件进行诊断,其中比较典型的包括线程阻塞,CPU 使用率过高,JVM Crash,堆内存不足,和类装载等问题。作为一款轻量级(与 Heap dump 和 System dump 相比)的转储文件,Java dump 的确是我们诊断 JVM 问题的首选.
    相关文章见利用 Java dump 进行 JVM 故障诊断
      

  16.   

    UFO不会出现一个字节的内存泄漏和一个线程的不能回收。 UFO:一个支持Jsp、Servlet、静态网页、虚拟主机、数据库连接池、http、https、无线互联网mimeType标准、认证和Tag库的Web Server。使用UFO做Web Server的好处是网站能做得很稳定,永远也不会自己down掉,另外,UFO几乎不会进行垃圾回收,消耗CPU很少,在普通的PC Server上用UFO运行网站,平时CPU占用率<0.1%,最多时也不会超 过5%。您知道,JVM的垃圾回收会导致大量的运算,消耗很多CPU,从而导致Server的负载能力和响应速度下降。UFO在对象管理方面采 用了很好的机制和算法,做得很出色。用UFO运行网站,可以一直保证高负载能力,快速的响应速度和低CPU消耗。下载网址:www.gm365.com
      

  17.   

    UFO, 没有搞过,也没有听说过,孤鞻寡闻啊
      

  18.   

    深圳JAVA J2EE QQ①群 32763598 深圳JAVA J2EE QQ②群  6086837 
    欢迎深圳的JAVA程序员加入,共同探讨技术与工作、项目合作、共享信息、结交朋友  
      加入请输入验证信息:SZJP