码迷,mamicode.com
首页 > Web开发 > 详细

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

时间:2015-04-03 13:28:06      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:java   内存溢出   内存   解决方案   hibernate   

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

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

标签:java   内存溢出   内存   解决方案   hibernate   

原文地址:http://blog.csdn.net/fuleidemo/article/details/44854047

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!