spring+hibernate管理的service方法,内存溢出
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方法,当监控内存的时候,就不会有内存溢出的现象.