对象池

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

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

优点:能快速取出对象节省了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 }
相关文章
C# | 对象池
当我们在做软件开发时经常会需要创建很多的相同且特殊的对象,比如线程、内存、数据库连接、文件句柄等,这类特殊对象有着占用IO资源、创建或销毁的开销大等特点,会导致系统的性能下降和资源浪费。而对象池的出现就是为了解决此类问题,使用对象池来管理这些对象让它们可以被重复使用,从而提高效率。
109 0
对象池、连接池的意义
对象池就是一个在程序启动的时候先创建好若干个可以重复使用的对象。 当程序其他地方需要使用该类型对象时,不再是向系统申请创建,而是向池发出请求。 池将会从池内发配出一个对象提供使用,当程序使用完毕后,需要将对象归还给对象池做管理。
209 0
|
10月前
为对象分配内存TLAB
为对象分配内存TLAB
面试官:什么是对象池?有什么用?别说你还不会!
对象池顾名思义就是存放对象的池,与我们常听到的线程池、数据库连接池、http连接池等一样,都是典型的池化设计思想。 对象池的优点就是可以集中管理池中对象,减少频繁创建和销毁长期使用的对象,从而提升复用性,以节约资源的消耗,可以有效避免频繁为对象分配内存和释放堆中内存,进而减轻jvm垃圾收集器的负担,避免内存抖动。
482 0
Netty4底层用对象池和不用对象池实践优化
Netty4底层用对象池和不用对象池实践优化
65 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等