事情的起因是这样的,之前同事的代码有一个内存池出现了没有回收的情况。也就是是Pop出来的对象没有Push回去,情况很难复现,所以在Pop里的打印日志,跟踪是谁调用了它,我想在GDB调试里可以追踪调用的栈帧,那也一定有方法实现。首先上网搜索了一下,并没有结果!还好代码量不是很多,只能用最笨的方法...
分类:
系统相关 时间:
2015-11-03 11:54:09
阅读次数:
284
1、选择select2、异步选择WSAAsyncSelecct3、事件选择WSAEventSelect 100-500客户端使用4、重叠IO Verlapped IO5、完成端口Completion Port(常配合线程池,内存池技术一起使用) 10000-20...
1.引言 C/C++下内存管理是让几乎每一个程序员头疼的问题,分配足够的内存、追踪内存的分配、在不需要的时候释放内存——这个任务相当复杂。而直接使用系统调用malloc/free、new/delete进行内存分配和释放,有以下弊端: A.调用malloc/new,系统需要根据“最先匹配”、“...
分类:
其他好文 时间:
2015-10-24 16:58:04
阅读次数:
165
OC中的内存管理主要由三种方式ARC(自动内存计数),手动内存计数,内存池;1)ARC:这种方式和java类似,在你的程序的执行中,始终有一个高人在你背后准确的帮你收拾垃圾,你不用考虑它什么时候开始工作,怎么样工作,你只需明白,我申请了一段内存空间,当我不再使用从而这段内存成为垃圾的时候,我就会彻底...
分类:
其他好文 时间:
2015-10-22 09:09:26
阅读次数:
205
内存池(Memory Pool)是一种内存分配方式。 通常我们习惯直接使用new、malloc等API申请分配内存,这样做的缺点在于:由于所申请内存块的大小不定,当频繁使用时会造成大量的内存碎片并进而降低性能。内存池则是在真正使用内存之前,先申请分配一定数量的、大小相等(一般情况下)的内存块留作备....
分类:
其他好文 时间:
2015-10-12 22:44:08
阅读次数:
1076
最近在写游戏服务器网络模块的时候,需要用到内存池。大量玩家通过tcp连接到服务器,通过大量的消息包与服务器进行交互。因此要给每个tcp分配收发两块缓冲区。那么这缓冲区多大呢?通常游戏操作的消息包都很小,大概几十字节。但是在玩家登录时或者卡牌游戏发战报(将整场战斗打完,生成一个消息包),包的大小可.....
分类:
其他好文 时间:
2015-09-28 23:41:57
阅读次数:
266
池(Pool)技术在一定程度上可以明显优化服务器应用程序的性能,提高程序执行效率和降低系统资源开销。这里所说的池是一种广义上的池,比如数据库连接池、线程池、内存池、对象池等。其中,对象池可以看成保存对象的容器,在进程初始化时创建一定数量的对象。需要时直接从池中取出一个空闲对象,用完后并不直接释放掉对...
分类:
编程语言 时间:
2015-09-23 06:42:17
阅读次数:
200
pool内存池概述通常我们习惯直接使用new、malloc等API申请分配内存,这样做的缺点在于:因为所申请内存块的大小不定。当频繁使用时会造成大量的内存碎片并进而减少性能。内存池则是在真正使用内存之前,先申请分配一定数量的、大小相等(普通情况下)的内存块留作备用。当有新的内存需求时。就从内存池中分...
分类:
其他好文 时间:
2015-09-20 20:28:34
阅读次数:
247
内存池:pool 用于分配无需构造的对象,如int ,char ,double等,pool p 一个可分配内存池;然后调用p.malloc()进行内存分配(p != NLL 用来判断是否申请成功)。无需手动free() 生命周期结束时自动释放。object_pool内存池对象。可用construct...
分类:
其他好文 时间:
2015-09-16 14:17:00
阅读次数:
183
“除了静态内存和栈内存之外,每个程序还拥有一个内存池。这部分空间被称作自由空间(free store)或堆(heap)。程序用堆来存储动态分配(dynamically allocate)的对象”——《C++ primer(第五版)》 P400 栈 *由系统自动管理,以执行函数为单位。 ...
分类:
编程语言 时间:
2015-09-15 12:49:09
阅读次数:
233