JDBC ResultSet占用的内存 在close后能否释放?

11-05-11 tap
是这样,我用JDBC取回来一个结果集,此时内存消耗大概200多MB;然后放入MAP缓存,此时内存消耗大概500MB;然后我关闭ResultSet 内存消耗并未减少,这是为什么啊?


估计大伙吃饭去了,回来了给解答一下吧,多谢了

[该贴被tap于2011-05-11 12:15修改过]

4
weiweishouwang
2011-05-11 12:37
JAVA语言不允许程序员直接控制内存空间的使用。内存空间的分配和回收都是由JRE负责在后台自动进行的,尤其是无用内存空间的回收操作 (garbagecollection,也称垃圾回收),只能由运行环境提供的一个超级线程进行监测和控制。
一般是在CPU空闲或空间不足时自动进行垃圾回收,而程序员无法精确控制垃圾回收的时机和顺序等。所以你看见内存没有被释放,可能是垃圾回收还没有进行。

[该贴被weiweishouwang于2011-05-11 12:38修改过]

tap
2011-05-13 18:03
2011年05月11日 12:37 "@weiweishouwang"的内容

顶一下
JAVA语言不允许程序员直接控制内存空间的使用。内存空间的分配和回收都是由JRE负责在后台自动进行的,尤其是无用内存空间的回收操作 (garbagecollection,也称垃圾回收),只能由运行环境提供的一个超级线程进行监测 ...


多谢weiweishouwang ,那么如果我close ResultSet后运行system.gc();会有效果么,这块被占用的内存是否会立即释放,还需要将ResultSet指为null么?

猜你喜欢