对象池

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

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

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

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

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

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

01package 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}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值