duf*_*ymo 34
对象池是应用程序将创建并保留的特定对象的集合,用于创建每个实例的代价高昂的情况.一个很好的例子是数据库连接或工作线程.该池检查实例的进出情况,例如图书馆外的书籍.
通常,对象池由Java EE应用程序服务器处理.如果您需要自己动手,最好使用Apache的对象池.不要自己写一个; 线程安全和其他问题可能使它变得复杂.
弱引用是一种由垃圾收集器专门处理的引用变量.
这引入了另一种可达性,任何对象可能是:
(还有Soft References和Phantom References,我在这里省略了 - 它们的工作方式类似,并介绍了更多层次.)
如果根本无法访问对象,则可以随时对其进行垃圾回收.如果一个对象是强可访问的,则根本不能进行垃圾收集.如果垃圾收集器发现一个对象(或一组对象)是弱可达的(可能是多个弱引用),它会立即清除所有这些引用,然后无法访问这些对象(并且可以进行垃圾收集).
(实际上,"不可到达"和集合之间可能存在/可能是最终确定步骤,这也可能使对象再次可达.)
对于使用弱引用,您可以使用该类java.lang.ref.WeakReference- 实际引用位于此类的私有变量中,并且只能使用构造函数进行设置,然后才能清除.如果除了引用本身之外还需要其他数据,则可以对此类进行子类化,当引用被清除时,它仍应存在.
对于"避免代价高昂的实例化"意义上的对象池,弱引用不是正确的工具.
对象池是任何被回收的对象集合,而不是在每次需要它们时重新创建。
根据您的要求,您可以通过多种方式实现这样的对象池。对象池用于帮助提高性能,即使对于简单的对象,但在 Java 5+ 中没有那么有用。
我建议您仅将它们用于连接到外部资源(例如文件、套接字或数据库连接)的对象。
| 归档时间: |
|
| 查看次数: |
40850 次 |
| 最近记录: |