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

连接池创造完Connection后放入内存,一切完成,程序也就结束了,相应的对象引用都被回收机回收了啦?连接池所有的操作应该都会清除,为何还会有对象存于内存中?难道是Connection被序列化了嘛?可是,我用过序列化,connection并不能被序列化。

第1个回答  2016-06-21
纠正下你的说法.一个类是不会无缘无故运行的,所以谈不上占用内存,更没有回收.你问的应该是使用一个类创建了一个对象,如何回收该对象所占的内存空间?
例如有一个Person类,我们创建他的一个对象,一般是如下:
Person mPerson = new Person();
这个时候情况是,在栈内存中标记了一个名字叫mPerson的空间,它存储了一个关于某块内存区域位置的信息,说白了,就是你使用new Person();创建出来的对象的位置,我们称mPerson为Person对象的一个引用。这个对象位于堆内存,它是有默认值的,必须占内存一部分空间,想使用的时候,可以通过mPerson找到它。当你把mPerson赋值为null后,你那个对象就没有引用了,这个时候,你的JVM会在适当的时候自动去回收掉Person的对象。追问

我懂你说的意思,但是我所说的重点并非是回收机制,而是关于数据库连接池原理中存放链接Connection对象,该对象是如何存活的,当需要链接时,会从连接池中取Connection对象,完全两个不同线程如何做到对同一个连接池实例的操作

相似回答