|
|
Re: 这个理解对吗
最初由 SUNONEJcy 发布
[B]实际上这是一个JDBC问题,我是一个初学者,但是就现在的了解而言,connection statement 和 resultset 的关闭问题在很大程度上是不需要显示地关闭的,因为首先 connection 可以由连接池管理,是完全可以并行的,而resultset 在结果都被取出的情况下是被JDBC自动关闭的,当然如果只用到了一部分结果可以显示地关闭,同时如果你还要用到同样的statement 就不必关闭它,因为新的 resultset 会覆盖旧的结果集。(以上情况不涉及循环),另外就楼上有人问的直接关了connection 那 statement 和 resultset 怎么办,不用担心,因为那样的话,JDBC会关闭所有。这是一点粗浅的看法,希望有人能指正我 [/B]
不能这么想啊, 在有很多用户并行使用系统的条件下, 连接池所管理的连接如果不及时释放, 就会出现连接不足的错误, 而片面加大连接数会吃掉大量内存, 造成不必要的浪费
而resultset也不能理解成覆盖, 而只能理解成对象的遗弃, 也就是说, 这个结果集会一直存在于内存之中, 直到JAVA的垃圾收集器把它清除, 更为糟糕的是, 结果集的存在会在DB上留下相应的临时表(虽然你看不到它的存在) 直到DB上的垃圾收集机制把它清除掉
这些都是不必要的系统负担, 很容易引起内存泄漏等问题, 在多用户连续运行的系统中一定要尽量避免, 否则系统就会象WINDOWS95/98那样, 使用一段时间就需要重新启动, 以清理内存(这可是真正的手工清理内存哦), 否则就可能莫名其妙地死掉  |
|