对象池化技术

原创 2004年12月31日 10:15:00

对象池化技术
 对象池化的基本思路是:将用过的对象保存起来,等下一次需要这种对象的时候,再拿出来重复使用,从而在一定程度上减少频繁创建对象所造成的开销。用于充当保存对象的“容器”的对象,被称为“对象池”(Object Pool,或简称Pool)。

 对于没有状态的对象(例如String),在重复使用之前,无需进行任何处理;对于有状态的对象(例如StringBuffer),在重复使用之前,就需要把它们恢复到等同于刚刚生成时的状态。由于条件的限制,恢复某个对象的状态的操作不可能实现了的话,就得把这个对象抛弃,改用新创建的实例了。

 并非所有对象都适合拿来池化——因为维护对象池也要造成一定开销。对生成时开销不大的对象进行池化,反而可能会出现“维护对象池的开销”大于“生成新对象的开销”,从而使性能降低的情况。但是对于生成时开销可观的对象,池化技术就是提高性能的有效策略了。


什么时候不要池化
  采用对象池化的本意,是要通过减少对象生成的次数,减少花在对象初始化上面的开销,从而提高整体的性能。然而池化处理本身也要付出代价,因此,并非任何情况下都适合采用对象池化。


 对于类似Point这样的轻量级对象,进行池化处理后,性能反而下降,因此不宜池化;  

  对于类似Hashtable这样的中量级对象,进行池化处理后,性能基本不变,一般不必池化(池化会使代码变复杂,增大维护的难度);

   对于类似JPanel这样的重量级对象,进行池化处理后,性能有所上升,可以考虑池化。

   根据使用方法的不同,实际的情况可能与这一测量结果略有出入。在配置较高的机器和技术较强的虚拟机上,不宜池化的对象的范围可能会更大。不过,对于像网络和数据库连接这类重量级的对象来说,目前还是有池化的必要。

  基本上,只在重复生成某种对象的操作成为影响性能的关键因素的时候,才适合进行对象池化。如果进行池化所能带来的性能提高并不重要的话,还是不采用对象池化技术,以保持代码的简明,而使用更好的硬件和更棒的虚拟机来提高性能为佳。


 

Java对象池技术的原理及其实现

摘 要 本文在分析对象池技术基本原理的基础上,给出了对象池技术的两种实现方式。还指出了使用对象池技术时所应注意的问题。   关键词 对象池;对象池技术;Java 对象;性能   Java对...
  • huang9012
  • huang9012
  • 2015年09月28日 23:16
  • 1601

unity - 对象池技术的实现与应用

本人之前发表在蛮牛网上的,现迁移至此。 本文为学习总结文章,如有错误请大神们指出~ 理论参考:http://www.cnblogs.com/mezero/p/3955130.html ...
  • u013236878
  • u013236878
  • 2016年09月05日 19:55
  • 3464

池化技术(线程池、连接池、内存池等)

一、池化技术 - 简单点来说,就是提前保存大量的资源,以备不时之需。 对于线程,内存,oracle的连接对象等等,这些都是资源,程序中当你创建一个线程或者在堆上申请一块内存时,都涉及到很多系统调...
  • syviah
  • syviah
  • 2015年06月18日 17:10
  • 1457

java对象池化技术

  • 2010年08月17日 15:04
  • 69KB
  • 下载

对象池化技术 org.apache.commons.pool

恰当地使用对象池化技术,可以有效地减少对象生成和初始化时的消耗,提高系统的运行效率。Jakarta Commons Pool组件提供了一整套用于实现对象池化的框架,以及若干种各具特色的对象池实现,可以...
  • itmyhome
  • itmyhome
  • 2011年11月06日 11:47
  • 1964

池化技术(线程池、连接池、内存池等)

一、池化技术 - 简单点来说,就是提前保存大量的资源,以备不时之需。 对于线程,内存,oracle的连接对象等等,这些都是资源,程序中当你创建一个线程或者在堆上申请一块内存时,都涉及到很多系统调...
  • syviah
  • syviah
  • 2015年06月18日 17:10
  • 1457

推进存储池化!浪潮推出业界首款基于SAS协议的交换式存储池(基于PMC技术)

浪潮发布了全球最丰富的整机柜SmartRack节点阵列, SAS Switch的推出,使得SmartRack在机柜级存储池化层面再进一步。...
  • u014602076
  • u014602076
  • 2015年11月24日 16:43
  • 740

池化技术 漫谈

原文地址:http://blog.csdn.net/magictong/article/details/3143947 池化技术 - 简单点来说,就是提前保存大量的资源,以备不时之需,O(∩_∩...
  • qq295445028
  • qq295445028
  • 2012年09月26日 15:07
  • 1186

仿照Android的池化技术

/** * 仿照Android池化技术 * @author fgtian * */ public class ObjectCacheTest { public static class Ob...
  • BuleRiver
  • BuleRiver
  • 2014年08月12日 22:02
  • 1702

“池化技术”漫谈 - 线程池,内存池,连接池……

池化技术 - 简单点来说,就是提前保存大量的资源,以备不时之需,O(∩_∩)O,对于线程,内存,oracle的连接对象等等,这些都是资源,程序中当你创建一个线程或者在堆上申请一块内存时,都涉及到很多系...
  • wqsailor12
  • wqsailor12
  • 2012年04月06日 11:06
  • 243
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:对象池化技术
举报原因:
原因补充:

(最多只允许输入30个字)