博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
对象池模式
阅读量:6509 次
发布时间:2019-06-24

本文共 803 字,大约阅读时间需要 2 分钟。

1.什么是对象池(Object Pool) ?

池(Poo), 与集合在某种意义上有些相似。 水池,是一定数量的水的集合;内存池,是一定数量的已经分配好的内存的集合;线程池,是一定数量的已经创建好的线程的集合。那么,对象池,顾名思义就是一定数量的已经创建好的对象(Object)的集合。

2.对象池是干什么的?

举个生活中水池的例子,在没有水池的时候,每次用水,都要去很远的地方挑水;有了水池之后的,一次挑很多水来,放在水池蓄下来,这样以后的一段时间内,用水的时候就不用去挑了,直接从水池取就可以了。同样的道理,在C/C++的程序中,如果一种对象,你要经常用malloc/free(或new/delete)来创建、销毁,这样子一方面开销会比较大,另一方面会产生很多内存碎片,程序跑的时间一长,性能就会下降。这个时候,就产生了对象池。可以事先创建好一批对象,放在一个集合中,以后每当程序需要新的对象时候,都从对象池里获取,每当程序用完该对象后,都把该对象归还给对象池。这样,就会少了很多的malloc/free(new/delete)的调用,在一定程度上提高了系统的性能,尤其在动态内存分配比较频繁的程序中效果较为明显。

3.对象池有什么特征?

一般来说,对象池有下面几个特征:
(1)对象池中有一定数量已经创建好的对象
(2)对象池向用户提供获取对象的接口,当用户需要新的对象时,便可通过调用此接口获取新的对象。如果对象池中有事先创建好的对象时,就直接返回给用户;如果没有了,对象池还可以创建新的对象加入其中,然后返回给用户
(3)对象池向用户提供归还对象的接口,当用户不再使用某对象时,便可通过此接口把该对象归还给对象池

4. 对象池如何实现?

只需要提供两个接口即可,用queue模拟一下。

转载于:https://www.cnblogs.com/Stomach-ache/p/4772970.html

你可能感兴趣的文章
andoird wifi 点对点连接笔记本的ad-hoc
查看>>
Android Jni开发之Android Studio教程
查看>>
主磁盘分区和逻辑磁盘分区的区别是什么?
查看>>
Oracle约束的状态及验证机制
查看>>
Elastic+logstash+filebeat做Nginx日志分析
查看>>
Java IO流学习总结
查看>>
Nginx(四):LNMMP架构实现Web动静分离
查看>>
缩小表空间时ORA-03297
查看>>
SGE 和 Slurm对比
查看>>
2017 MacBook Pro比去年的机型快了20%
查看>>
ubuntu 无法更新/下载软件,报404错误解决办法
查看>>
(四)搭建容器云管理平台笔记—安装ETCD(不使用证书)
查看>>
详解Zoosk千万用户实时通信背后的开源技术[转]
查看>>
linux命令行模式下输入Ctrl+s后界面锁定,假死。
查看>>
CentOS7关闭防火墙
查看>>
Solr5安装部署
查看>>
linux文件与文件夹权限
查看>>
使用rz\sz上传下载文件
查看>>
Shell 中的空值(null value)和不存在是不一样的。
查看>>
Lua使用总结
查看>>