hiberate+spring+struts+c3p0 产生的非常怪异的问题 
(1)hiberate+spring+c3p0,WEB容器是tomcat,监控工具是jprofiler,在本地进行批量数据导入时,内存上升到一定的高度,就会有大幅度的GC现象,tomcat运行正常.但是在服务器上,就没有大幅度的GC现象,直到tomcat运行很慢,崩溃为止,也不报任何的内存溢出异常. 
(2)对于(1)的问题,大家有没有遇见过,是不是服务器的运行速度太快,而本地的测试速度跟服务器的没法比的原因.还是其它原因? 
(3)对于(1)的问题,是不是c3p0引起的?我查看了数据库连接数是很正常的. 工作中,急.
问题补充:
两个tomcat是一样的. 
但是,我怀疑是hiberante产生的一些对象没办法释放. 
我在web.xml里面设置了
<filter>
        <filter-name>hibernateFilter</filter-name>
        <filter-class>
                        org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
        </filter-class>
        <init-param>
            <param-name>singleSession</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter> 
然后,这个是我的一些代码...是Spring管理的service方法
save*()
get*()
upate*()
然后,批量插入的时候,我是调用save*()方法直接插入的,调用一次,就插入一条记录.就算是没有做批处理,做其它的spring管理的service业务方法,当tomcat运行了一段时间也会倒掉.内存溢出.
不过,如果使用不是spring管理的service方法,当监控内存的时候,就不会有内存溢出的现象.

解决方案 »

  1.   

    溢出很正常啦 给的有解决方案的 加一个listener 就好了 是spring自带的 listener
      

  2.   

    这是sun 公司的一个bug 当jvm运行的过程中要加载类文件,但是原来设定的加载空间好像才只有几M,所以当你加载的类比较多时你只能是溢出了。
      

  3.   

    进行大量数据导入时是会出现这个问题的, 因为数据量太大而且内存没有得到释放。
    在数据导入是应该一部分一部分的导入,每完成一部分就把你保存数据的数据结构或者对象显式的赋空 (你的Object = null;)
    这样垃圾回收器就会及时的清除了