Java中数据库连接池是如何做到,将Connection作为对象放入内存中不被回收机回收?

Java中数据库连接池是如何做到,将Connection作为对象放入内存中不被回收机回收?,第1张

纠正下你的说法.一个类是不会无缘无故运行的,所以谈不上占用内存,更没有回收.你问的应该是使用一个类创建了一个对象,如何回收该对象所占的内存空间?

例如有一个Person类,我们创建他的一个对象,一般是如下:

Person mPerson = new Person()

这个时候情况是,在栈内存中标记了一个名字叫mPerson的空间,它存储了一个关于某块内存区域位置的信息,说白了,就是你使用new Person()创建出来的对象的位置,我们称mPerson为Person对象的一个引用。这个对象位于堆内存,它是有默认值的,必须占内存一部分空间,想使用的时候,可以通过mPerson找到它。当你把mPerson赋值为null后,你那个对象就没有引用了,这个时候,你的JVM会在适当的时候自动去回收掉Person的对象。

PHP中与数据库的连接是非持久连接,系统会自动回收,一般不用设置关闭,但是如果一次性返回的

结果集

比较大,或者网站访问量比较多,则最好使用

mysql_close

()函数手动进行释放!

当数据库连接池里的连接创建而长时间不使用的情况下,该连接会自动回收并失效,在客户端再次数据库 *** 作的时候,会导致此关闭连接的异常。

可在配置数据源后加上:

<property name="validation" value="select * from dual">

配置后,客户端在使用一个无效的连接时会对该连接进行测试,如果失效,则重新获取有效连接。

具体文档可参考:https://blog.csdn.net/majian_1987/article/details/18598589


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6801095.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-28
下一篇 2023-03-28

发表评论

登录后才能评论

评论列表(0条)

保存