对象池

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

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

优点:能快速取出对象节省了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 }
相关文章
|
存储 Shell Linux
快速上手基于 BaGet 的脚本自动化构建 .net 应用打包
本文介绍了如何使用脚本自动化构建 `.net` 应用的 `nuget` 包并推送到指定服务仓库。首先概述了 `BaGet`——一个开源、轻量级且高性能的 `NuGet` 服务器,支持多种存储后端及配置选项。接着详细描述了 `BaGet` 的安装、配置及使用方法,并提供了 `PowerShell` 和 `Bash` 脚本实例,用于自动化推送 `.nupkg` 文件。最后总结了 `BaGet` 的优势及其在实际部署中的便捷性。
498 10
|
机器学习/深度学习 人工智能 PyTorch
|
JSON atlas 图形学
unity之spine骨骼动画使用
unity实现spine骨骼动画使用
unity之spine骨骼动画使用
|
消息中间件 Java 中间件
秒懂消息队列MQ,万字总结带你全面了解消息队列MQ
消息队列是大型分布式系统不可缺少的中间件,也是高并发系统的基石中间件,所以掌握好消息队列MQ就变得极其重要。接下来我就将从零开始介绍什么是消息队列?消息队列的应用场景?如何进行选型?如何在Spring Boot项目中整合集成消息队列。
23623 10
秒懂消息队列MQ,万字总结带你全面了解消息队列MQ
|
缓存 图形学
Unity 之 关于UnityHub无法打开项目的问题(弹出Unity启动界面有退回到Hub选择工程界面)
弹出Unity启动界面有退回到Hub选择工程界面方案一:万能的重启大法;方案二:未开启许可证;方案三:终极奥义 -- 弃用Hub
3599 0
Unity 之 关于UnityHub无法打开项目的问题(弹出Unity启动界面有退回到Hub选择工程界面)
|
存储 数据采集 安全
各种系统架构图与详细说明
原文:各种系统架构图与详细说明 共享平台逻辑架构设计 如上图所示为本次共享资源平台逻辑架构图,上图整体展现说明包括以下几个方面: 1 应用系统建设 本次项目的一项重点就是实现原有应用系统的全面升级以及新的应用系统的开发,从而建立行业的全面的应用系统架构群。
26345 1
|
自然语言处理 IDE 开发工具
通义灵码编程智能体上线,支持Qwen3模型
通义灵码最全使用指南,一键收藏。
127801 31
通义灵码编程智能体上线,支持Qwen3模型
|
机器学习/深度学习 人工智能 弹性计算
阿里云GPU服务器全解析_GPU服务器租用费用_NVIDIA A10、V100、T4、P4、P100 GPU卡
阿里云GPU云服务器提供NVIDIA A10、V100、T4、P4、P100等多种GPU卡,结合高性能CPU,单实例计算性能高达5PFLOPS。支持2400万PPS及160Gbps内网带宽。实例规格多样,如A10卡GN7i(3213.99元/月)、V100-16G卡GN6v(3830.00元/月)等。适用于深度学习、科学计算、图形处理等场景。GPU软件如AIACC-Training、AIACC-Inference助力性能优化。购买方式灵活,客户案例包括深势科技、流利说、小牛翻译。
2441 0
|
缓存 网络协议 网络安全
主机虚拟机互Ping问题详解以及原理、解决互ping不通方案
主机虚拟机互Ping问题详解以及原理、解决互ping不通方案
8895 0
主机虚拟机互Ping问题详解以及原理、解决互ping不通方案
|
SQL XML Java
【MyBatis】 MyBatis与MyBatis-Plus的区别
【MyBatis】 MyBatis与MyBatis-Plus的区别
6829 0
【MyBatis】 MyBatis与MyBatis-Plus的区别

热门文章

最新文章