可以给tomcat分配更多的内存。  或者检查一下你的应用程序,看看是不是存在一些内存使用方面的缺陷

解决方案 »

  1.   

    我建议你使用监控工具查看一下你内存使用情况,看看是否有内存泄漏,现在这种工具很多。。netbeans6.0以上本身都有自带了。。查明原因在选择solution哦。
      

  2.   

    给tomcat分配内存解决不了根本问题,时间一长,还是有此问题
    程序中可能存在很大的buf,检查并修改之,如不断的往String 中添加内容,导致其大小超过JVM内存大小限制
      

  3.   

    1 去查内存泄露吧,特别是那些 static 或者 singlton 的 Map, List 里面。2 还有,图片,文件附件之类大文件不要全部读入到内存处理3 jconsole 可以动态的看到内存使用情况,是java自带的,可参考这个文章 http://www.java2000.net/viewthread.jsp?tid=178
      

  4.   

    你的java对象是不没有析构啊,造成对象内存的泄漏啊当出现问题时,数据库的状态如何?
      

  5.   

    java内存回收是通过gc来完成的,gc会对不可达的对象进行垃圾回收。java一般情况下是不会存在内存泄漏的(注意是一般情况下)除非你有对象长期hold住一些无用的资源不释放,周而复始就导致你内存溢出。
      

  6.   

    还有,图片,文件附件之类大文件不要全部读入到内存处理  老紫竹说的这条有可能。。因为oracle 的JDBC驱动报内存溢出了
      

  7.   

    lz的代码有clone的方法,不知道lz什么原因要实现clone呢?如果你hold住大量对象,很可能就会导致out of memory
      

  8.   

    修改Tomcat的启动脚本,增大内存。
      

  9.   

    这个需要一些灵感才行Jconsole进去看一下到底有一些什么线程在跑,然后一个一个的分析。
      

  10.   

    Java有一个垃圾回收机制,总是在内存剩余大概5%才启动,因为它中断权限最高,它运行,其他全部停止,因此,我们不希望垃圾回收机制频繁启动,那么就要控制内存不要触碰剩余5%底线。
      

  11.   

    两种可能
    1,内存泄漏
    2,没有内存泄漏,但是jvm来不及回收内存导致溢出。
    两种各占50%
      

  12.   

    1.数据库记录信息太多
    2.方法中的session是否关闭
    3.数据查询时,尽量不要全部查询出
      

  13.   

    程序问题. 
    不用DBCP ,换C3P0 ,proxool 试试.
      

  14.   

    请教个脚本 
    脚本方案:访问本机WEB;如果不响应就再试两次然后过滤出TOMCAT   PID杀掉再重新启动TOMCAT。 
    或者是每天定时晚上12点重起哪位熟悉脚本的教教我,谢了
      

  15.   

    还有一个办法,lsof看看这个程序到底打开了哪些文件,可能读入了非常大的文件
      

  16.   

    查看代码
    加大tomcat使用的内存
    用jprofile跟踪服务端,客户端压力测试
      

  17.   

    session用的多吗?
    注意session打开了要关闭
      

  18.   

    可修改Catalina.bat里面的内存大小
      

  19.   

    我的一个项目中,也遇到了,是一个财务系统,是通过一个url来读取相应的数据,存储到相应的数据库表中,生成了四个jar包,但其中jar包的xml配置的url 不同,其前三个是能够读取数据,但执行第四个jar包时,就出现了楼主的问题,后来在cmd中执行了java  -jar - Xmx1024m  -Xms512m jar文件这个应用是部在某所大学上的,其中第四个jar包执行时,会获取5W条的数据量。