对象池

简介:

对象池的工作原理:
对象池的工作原理的核心有两点:使用和缓存,即对于那些被频繁使用的对象,在使用完后,不立即将它们释放,而是将它们缓存起来,以供后续的应用程序反复使用,从而减少创建对象和释放对象的次数,进而改善应用程序的性能。

优点:能快速取出对象节省了new对象所产生的cpu,时间的消耗。能很好的控制内存的占用,使用时从对象池取出,使用完毕放回。中间不涉及到对象销毁创建,所以内存占用是定量的。同时假如对象池提前

缺点:对象池同样消耗new同样对象所消耗的时间,对象池从创建到结束消耗定量的内存。对象池只适合大量的对象需要被反复创建使用销毁创建使用销毁的情况。非提前初始化式内存池,缓存as值类型的对象如:point反而产生更大的消耗。

要实现一个对象池,一般会涉及到以下的几个类:

目标对象(someobject)类
该类就是程序中频繁使用的对象。

对象池(objectpool)类
该类主要用于管理对象的借出和归还,并通知对象池完成相应的工作。它至少包含两个方法:
  borrowobject():用于从池中借出对象;
  returnobject():将对象归还到池中;

01 package wingox.pool {
02 import flash.utils.dictionary;
03
04 /**
05 * @version 20100315
06 * @author brightli
07 */
08 public class objectpool {
09
10 private static var _pool : dictionary = new dictionary(true);
11
12 private var _template : class;
13
14 private var _list : array;
15
16 public function objectpool(value : class) {
17 _template = value;
18 _list = new array();
19 }
20
21 public function borrowobject() : object {
22 if(_list.length > 0) {
23 return _list.shift();
24 }
25 return new _template();
26 }
27
28 public function returnobject(value : object) : void {
29 _list.push(value);
30 }
31
32 public static function getpool(value : class) : objectpool {
33 if(!_pool[value]) {
34 _pool[value] = new objectpool(value);
35 }
36 return _pool[value];
37 }
38 }
39 }
本文转自jiahuafu博客园博客,原文链接http://www.cnblogs.com/jiahuafu/archive/2010/12/01/1892612.html如需转载请自行联系原作者

jiahuafu

相关文章
|
6月前
|
存储 安全 算法
深入剖析JVM内存管理与对象创建原理
JVM内存管理,JVM运行时区域,直接内存,对象创建原理。
104 2
|
5月前
|
存储 缓存 算法
JVM对象创建与内存分配机制
该类对应的java.lang.Class 对象没有在任何地方被引用,无法在任何地方通过反射访问该类的方法。
41 0
|
存储 缓存 Java
【JVM】8. 对象实例化及直接内存(2)
8.2.3. 对齐填充(Padding) 不是必须的,也没有特别的含义,仅仅起到占位符的作用 举例
|
6月前
|
安全 Java 数据库连接
C# | 对象池
当我们在做软件开发时经常会需要创建很多的相同且特殊的对象,比如线程、内存、数据库连接、文件句柄等,这类特殊对象有着占用IO资源、创建或销毁的开销大等特点,会导致系统的性能下降和资源浪费。而对象池的出现就是为了解决此类问题,使用对象池来管理这些对象让它们可以被重复使用,从而提高效率。
77 0
|
11月前
|
Java C# 图形学
Unity——对象池
Unity——对象池
103 0
|
安全 编译器 程序员
25 C++ - 动态对象创建
25 C++ - 动态对象创建
46 0
|
存储 缓存 算法
jvm之对象实例化及直接内存解读
jvm之对象实例化及直接内存解读
|
存储 算法 Java
【JVM】8. 对象实例化及直接内存(1)
8.1. 对象实例化 8.1.1. 创建对象的方式 new:最常见的方式、Xxx的静态方法,XxxBuilder/XxxFactory的静态方法 Class的newInstance方法:反射的方式,只能调用空参的构造器,权限必须是public Constructor的newInstance(XXX):反射的方式,可以调用空参、带参的构造器,权限没有要求 使用clone():不调用任何的构造器,要求当前的类需要实现Cloneable接口,实现clone() 使用序列化:从文件中、从网络中获取一个对象的二进制流
|
C# 图形学
U3D客户端框架之基于类对象池的可回收变量代码实现
可回收变量 是基于引用计数去做的管理,基类实现了引用计数增加,和释放功能,当调用引用计数增加函数时,引用计数+1;当调用释放函数时候,引用计数-1,当引用计数==0的时候,类对象池会把该可回收变量对象回收。
|
缓存 监控 关系型数据库
对象池、连接池的意义
对象池就是一个在程序启动的时候先创建好若干个可以重复使用的对象。 当程序其他地方需要使用该类型对象时,不再是向系统申请创建,而是向池发出请求。 池将会从池内发配出一个对象提供使用,当程序使用完毕后,需要将对象归还给对象池做管理。
186 0