关于Java中内存释放问题

Easince 发布于 2012/12/04 10:39
阅读 567
收藏 1

开源之夏第三届火热来袭,高校学生参与赢万元奖金!>>>

今天早上想优化一段代码,脑子突然有点卡顿,请教大伙一个问题:

问题描述:

//DataHelper.query()函数查询数据库并返回一个Cursor对象
Cursor cursor = DataHelper.query();
...
...
...
...
//再次查询数据
cursor = DataHelper.query();
第一次查询数据之后,cursor对象指向一块内存地址,第二次cursor是不是指向了另一块内存地址,如果第二次的确指向的另一块内存地址,那么第一次指向的内存地址是不是没有及时回收,我是不是应该在第二次查询之前调用一下“cursor = null”。

加载中
0
xoHome
xoHome
该评论暂时无法显示,详情咨询 QQ 群:点此入群
0
Easince
Easince

引用来自“xoHome”的答案

这种非静态对象不会存在内存泄露,你所担心的问题垃圾回收机制会自动处理。
如果我使用了"cursor = null "是不是能够更加及时的触发内存回收啊?
Easince
Easince
回复 @Cavalier : 看来我是多虑了,有点强迫症,呵呵。还没有牛查到改垃圾回收策略的地步,⊙﹏⊙b汗
Cavalier
Cavalier
该评论暂时无法显示,详情咨询 QQ 群:点此入群
Easince
Easince
回复 @xoHome : ok,了解了,看来得抽时间认真研究下Java的内存管理,谢谢!
xoHome
xoHome
不会,首先在编译阶段cursor=null可能就会被优化去掉,其次垃圾回收时间不受用户代码控制,可能在任何时间回收垃圾。不过如果你对虚拟机运行时栈比较了解的话,可以最大程度上的减少运行内存。
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部