博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JAVA递归中的垃圾回收
阅读量:7104 次
发布时间:2019-06-28

本文共 624 字,大约阅读时间需要 2 分钟。

最近在处理数据库导数据的工具,就是迭代发版之前把正式线的工程拷贝到测试环境,执行升级,看看功能是否完善。

所以涉及到对jdbc分页读取数据,再存储到测试环境数据库。在分页处理的地方,使用了递归。

工具交付给测试同事之后,大部分工程都能拷贝成功,但是有一部分大数据量的工程还是失败了,最开始的关注点都在数据库的数据上,因为比较恶心的是,数据库存了比较多的二进制字段,超级大文本。失败的现象是数据导到大表时,都会挂掉,一直跟到挂掉的MySQL记录,发现数据量并没有想象中的那么大。后来在日志角落里发现了内存泄漏,好吧,跟数据库没关系,一行一行的查代码。终于看到了递归的代码!

Java中有垃圾回收机制,理论上一个方法执行完了之后,方法内部申请的资源都会被回收,但是递归确实不一样,在整个递归结束之后,都不会释放掉中间申请占用的资源。我的场景之中,递归中查询到的源数据集合list,很大,当递归到一定的程度,必然会挂掉。其实比较简单的做法就是在递归中,对于比较声明的比较大的对象,直接置null即可,垃圾回收机制会回收这些递归中声明的变量。

即栈中存储对象的引用以及基本数据类型,堆中存储对象,引用只想堆中的对象,将引用置null,那么堆中的对象没有被引用,那么堆中申请的资源就会被回收。

直接上代码:

本文转自 斯然在天边 51CTO博客,原文链接:http://blog.51cto.com/13172906/1976389,如需转载请自行联系原作者

你可能感兴趣的文章
PHP sftp 上传文件失败 但可以创建目录
查看>>
MySQL 导出数据字典
查看>>
MySQL带有视图数据库在恢复数据时视图变成数据表的解决方法
查看>>
4-Nginx 日志管理
查看>>
寒冰linux视频教程笔记2 基础操作
查看>>
js 去抖技术应用例子
查看>>
应用统计学与R语言实现学习笔记(二)——数据收集
查看>>
配置RHEL6.1 x86_64常用yum源
查看>>
Android 常用概念理解
查看>>
Python模块之"prettytable"
查看>>
python-39: cookies
查看>>
我的友情链接
查看>>
rsync 服务器搭建
查看>>
Linux系统巡检命令列表
查看>>
linux时间同步 ,ntp ntpdate
查看>>
【LINUX】linxu文件共享服务器samba
查看>>
如何与非同盟组织分享日历
查看>>
div css页面如何提高用户体验 和 chrome浏览器CSS字体大小小于12px不起作用解决方法...
查看>>
第一篇博文,写一下工作心得
查看>>
Js与Json
查看>>