memcache研究笔记 之 conn内存管理借鉴

freeconns 是 conn 的二维数组, freecurr指向当前的空闲槽
conn 的分配 -- conn_from_freelist()函数。分配策略很简单, 就是把 freeconns[freecurr -1] 分配出去, 然后 freecurr 指针下移一个单位.如果 freeconns 没有空闲的 conn, 分配就失败, 函数 conn_from_freelist 返回 NULL, 这时memcached 就会从操作系统分配内存空间. 事实上 memcached 不会预先给 freeconns分配一些空闲 conn, conn 都是在系统运行期间按需分配的.
 conn的回收:把用完的 conn 挂在 freecurr 所在的槽位.

::conn_add_to_freelist 在函数 conn_new(event_set fail的时候) 或者 conn_close

内存管理的思维是,你可以使用工厂模式管理一堆已经分配出的内存对象,无需反复分配和回收,也能尽量避免系统内存碎片等异常的概率,缺点是占用内存,但对于提供服务的系统,还是发挥了重用资源的性能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值