Hibernate在处理数据量比较大的时候内存不释放的解决方案

                    随着信息化的推进,系统的依赖性也变的越来越强,所以各种数据不断积累,数据开发率并不高,所以数据还不能准确高效的使用,这个时候我们就需要将数据导出到Excel然后通过手工的方式进行处理,但是当讲数据库的数据查询出来的时候,发现JVM的内存持续升高,知道内存溢出,一开始我以为是list太大的原因,我将list固定到1w,然后不断循环去数据库取数据,发现问题依旧存在,没有任何改变,所以说明问题的出处,不在LIST,于是继续寻找,开始进行无用代码隔离,发现问题出现在了hibernate,仔细测试,找到了内存持续增长的地方是Query.list()方法,为了提高效率,尽可能多的占用内存,最终导致内存数据泄露,所以,我使用了最直接的方法,将list.clear()集合清空,发现没有作用,这让我很不可理解,这个返回结果直接返回一个引用,并不是真正的list,此时已经差不多半天时间过去了,问题依然没有解决,想想以前数据量小的时候,很多问题都没有出现,于是调整心态,继续查看API,发现Session情况可以解决问题,于是赶紧试试看,果然,内存在一定范围内稳定下来了,而且数据导出时间和效率明显提高,excel2007在5分钟导出100W数据到1个sheet表很轻松,问题解决了,但是依然感到很不安,原来我对hibernate知识只是了解了一个表面,很多用法还不是很理解,实现原理,实现方式还没有研究过,所以,要走的路还很长,要学的知道还很多,重新拾起自己的激情,开始努力学习吧
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值