`

小议内存池、资源池

阅读更多

比较简单的一篇文章。本来是有些地方没想明白,想分析一下。结果写着写着就明白了,才发现如此简单。留之 ~

 

简单的定义

我对一些专业的名词不怎么熟悉,没有很系统的学习过,所以先稍微解释下我的一点概念上的认识:

看见过很多类似的词,比如 高速缓存分配、内存对象池、对象池、连接池等等。

我觉得一个池已经带有高速的意义了,所以很少加上高速的称呼;

而内存对象池和对象池,对象的意义太广,包括了资源和内存,更适用一种后缀符的修饰。而资源更倾向一个抽象层的分配性,内存是一种本质上的空间申请。可以称线程对象池,连接对象池,而直接称对象池有点不明所指;

资源池是一个抽象的概念,比如线程池,连接池,文件IO池等等。更倾向一种高层资源符号的占用。比如一个文件IO,你用一个指针保存即可,不涉及到对内存的太敏感性。

也就是说,在我的认识里,分配分两种,一种是空间上的,一种是高层资源符号的占用,在对他们的称呼上可能大家不是很赞同,但没关系,只是在文章头起到一个定义作用,以免下文的混淆。


(注意:以下都是讨论行为特点,不对效率上的写法讨论。效率的东西可以考虑我的上文“缓存的力量”)

 

 

内存池的行为特点

比如以下一个简单的对象:

 

class CPlay
{
public:
   void CPlay()
   {
       //清零各个对象

   }

private:
    char name[24];
    int age;
    char buffer1[100];
};

class CKmem
{
	void *GetMem();
	void *FreeMem(void *p);
};

T t;

void *p = CKmem.GetMem();
CPlay *pPlay = new (p)CPlay;

//...
pPlap->~CPlay();
CKmem.FreeMem(pPlay);

 

假设这是一个游戏人物中的对象数据,在每回申请的时候,必须调用构造函数来进行初始化。因为它占有的资源符号就是内存,并没有什么可继承性的东西。

 

资源池的行为特点

我们按照内存池的思维方式来一遍,文件IO的:

 

class CFile
{
public:
	CFile();
	{
		p = fopen(.....);
	}
	~CFile()
	{
		close(p);
	}
	
	int Write(const char *pBuffer, int size);
	
	FILE *p;
};

T t;

void *p = CKmem.GetMem();
CFile *pFile = new (p)CFile;
//...
pFile->~CFile();
CKmem.FreeMem(pFile);

 

  好像没什么问题。等等,当你第二次再次GetMem()的时候,发生了什么? p又被重新创建了一次。于是FILE *p就一直往返于创建和删除之间。这符合池的原则吗?池的原则就是重复的快速利用,减少申请的开销。也就是说根本不考虑是怎么释放的。加上一个释放,不是多次一举吗?所以不能用对象池的思想来编写资源池。资源池的特点是,对抽象资源符号的占有,瓶颈在申请的过程上。所以它本身(符号)对内存的要求几乎没有,比如一个event,只是个int型在记录。在保存上,你想用对象池的方法来写也行。就比如linux下的slub,是利用内存片头4个字节来记录地址。如果你熟悉这种技巧,就可以申请一个8字节的大小来存放。这个slub也已经由我仿写成windows下的版本

2
1
分享到:
评论

相关推荐

    小议iOS内存管理-中文.pdf

    与Java的自动垃圾回收不同,OC要求开发者手动管理内存,这在一定程度上增加了开发复杂度,但也促使开发者更加注重代码的优化,尤其是在资源受限的移动设备上,力求最小化CPU使用率和内存占用。 #### 二、基本原理...

    小议人力资源外包.doc

    小议人力资源外包.doc

    小议我国淡水资源保护的紧迫性.doc

    【水资源保护的紧迫性】 我国淡水资源保护的紧迫性源于水资源的稀缺性和分布不均衡,以及日益严重的水污染问题。水资源的可持续利用是国家经济、社会发展的基石,因此,保护水资源不仅涉及水量的合理调度,也包括...

    小议对水资源核算的总体认识.doc

    水资源核算的总体认识涉及到对水资源在国民经济中的重要性、现有核算体系的局限性以及环境卫星账户(SEEA)在解决这些问题中的角色。国民经济核算(SNA)是衡量一个国家经济活动的标准框架,但它并未充分考虑环境...

    小议信息资源管理在图书馆的运用.doc

    《小议信息资源管理在图书馆的运用》这篇文章探讨了高校图书馆在信息资源管理中的关键环节,包括信息收集、存储、组织和检索,并分析了当前存在的问题及改进措施。 信息资源管理的内容主要包括四个方面: 1. **...

    小议煤炭资源型城市的发展转型

    当前国家经济环境的深刻变革要求我国煤炭资源型城市积极转型,在这样的条件下,提出了必须调整城市发展方向促进城市结构改革的论点。进而具体阐述了如何调整煤炭资源型城市的发展方向,引出了合理规划城市的议题,具体...

    小议经济型酒店消费者心理及消费方向.doc

    小议经济型酒店消费者心理及消费方向.doc

    小议外汇期权会计在新规则中应用.doc

    小议外汇期权会计在新规则中应用 本文主要探讨了小议外汇期权会计在新规则中的应用,涉及到外汇期权的概念、分类、确认、计量和披露等方面的知识点。 一、外汇期权的概念 外汇期权是一种金融衍生工具,允许持有人...

    小议新能源企业人力资源管理的创新.pdf

    文章将从小议新能源企业人力资源管理创新的角度出发,探讨在环保、智能化、可持续发展的趋势下,新能源企业如何在人力资源管理上进行创新,以适应这个快速变化的行业。 首先,技术的快速变化给新能源企业人力资源...

    抖动算法小议

    ### 抖动算法小议——深入探讨多媒体技术中图像的抖动算法 #### 引言 在多媒体领域,尤其是在图像处理技术中,抖动算法扮演着至关重要的角色。本文旨在通过对抖动算法的深入解析,帮助读者理解其原理及其在灰度...

    小议嵌入式计算机技术.pdf

    小议嵌入式计算机技术.pdf

    法治思想起源小议.docx

    法治思想起源小议.docx

    小议食品安全问题.doc

    小议食品安全问题.doc

    小议“地摊经济”合集

    小议“地摊经济”合集

    小议“地摊经济”2020

    小议“地摊经济”2020

    小议如何培养班干部.doc

    小议如何培养班干部.doc

    小议法国的刑法改革.pdf

    小议法国的刑法改革.pdf

    小议休谟政治哲学.pdf

    小议休谟政治哲学.pdf

    小议新形势下大额现金管理.doc

    【文章摘要】本文主要探讨了在新的形势下大额现金管理的重要性,特别是在反洗钱方面的挑战。通过对河南省近年来现金收支情况的分析,发现现金流量逐年增加,储蓄性收支占比大且呈上升趋势,同时现金交易在经济活动中...

Global site tag (gtag.js) - Google Analytics