当前位置: 首页 > wzjs >正文

wordpress免费企业主题网站宁波seo外包推广软件

wordpress免费企业主题网站,宁波seo外包推广软件,python 做网站相关的库,济南建设局网站公式一、内存池 1、内存池所使用的内存是什么内存? 指的是虚拟内存(堆空间),而不是物理内存 2、为什么会有内存池? 一个系统或者程序长期运行,突然会coredump掉,并且程序又频繁地分配和释放内存…

一、内存池

1、内存池所使用的内存是什么内存?

指的是虚拟内存(堆空间),而不是物理内存
在这里插入图片描述

2、为什么会有内存池?

一个系统或者程序长期运行,突然会coredump掉,并且程序又频繁地分配和释放内存,那么大概率就是内存碎片导致coredump。

3、什么是内存碎片?

内存动态分配和释放过程中产生的‌不连续空闲区域‌,其本质是未被高效利用的存储空间。

  • 外部碎片:空闲区域的总大小足够,但因为过小或者太过离散,导致没有一个单独的连续空闲区域能够满足当前分配请求。
  • 内部碎片:空闲区域的总大小大于当前分配请求的大小,但是分配的区域比实际需要的要大。比如:系统一页为4K,进程申请3K,剩余1K就未充分利用,称为内部碎片。

3、内存池的优点

  1. 减少内存碎片
  2. 提高内存分配效率,因为不需要每次都调用系统函数进行内存申请和释放。
  3. 减少内存泄漏的可能性

二、具体实现

1、定长

1、以一页为4KB为例。

每个内存块大小为x,那么一页就有y个内存块。
y = 4096 / x;

typedef struct mempool_s {int block_size; //每个内存块的大小int free_count; //空闲内存块的数量char* mem_ptr;  //指向内存池的起始地址char* free_list; //指向空闲内存块的链表头
}mempool;
2、初始化内存池

实质:还是使用malloc分配内存,不过是以一页4KB分配,当不需要时,再以页为单位进行删除,减少频繁申请/释放的操作

int init_mempool(int block_size, mempool* mp)
{if (!mp) return -1;mp->block_size = block_size;;mp->free_count = MEM_PAGE_SIZE / block_size;mp->mem_ptr = (char*)malloc(MEM_PAGE_SIZE);if (!mp->mem_ptr) return -2;memset(mp->mem_ptr, 0, MEM_PAGE_SIZE);mp->free_list = mp->mem_ptr;//初始化空闲内存块链表int i;char* p = mp->mem_ptr;for (i = 0; i < mp->free_count; i++) {*(char**)(p) = p + block_size;              //节约空间,使用二级指针来存储下一个块的首地址。p += block_size;}*(char**)(p) = NULL;return 0;
}
3、内存池分配内存
void* mempool_alloc(mempool* mp)
{if (!mp || mp->free_count == 0) return NULL;void* p = mp->free_list;if (p) {mp->free_list = *(char**)(p);mp->free_count--;}return p;
}
4、结果

使用二级指针来存储下一个块的首地址。
在这里插入图片描述
在这里插入图片描述

三、总结:

  1. 在确保代码逻辑正确的前提下,使用内存池能显著降低程序长期运行时出现coredump的概率。
  2. 内存池的工作原理是预先申请一大块内存,然后重复利用该内存资源,避免了频繁申请和释放内存带来的开销。
  3. 内存池的分配策略主要分为定长分配和不定长分配两种类型。

四、拓展

可以使用内存管理组件,jemalloc,tcmalloc等。好处就是易上手,缺点就是不一定适用于所有场景。

指标jemalloctcmalloc
线程缓存线程私有tcache,减少锁竞争线程本地缓存
小对象分配
大对象分配
适用场景高并发,多线程应用,高度内存利用率高的场景小块内存分配频繁

五、问题

1、有没有内存池有什么区别?

内存池的使用差异主要体现在程序运行周期上。对于偶尔运行的程序,内存池的作用不大;但对于需要长期稳定运行的服务器应用(7×24小时不间断运行),内存池则能显著提升性能和管理效率。如果程序只运行一两次,那么有没有内存池都行,但是如果程序长期运行,比如服务器,需要长期7*24小时运行,那么有没有内存池的区别就很大了。

代码:
Code
0voice·Github

http://www.dtcms.com/wzjs/23086.html

相关文章:

  • 工程建筑模板价格seo入门教学
  • 益阳网站建设公司电话杭州优化外包
  • 高安网站设计搜狗seo软件
  • 重庆忠县网站建设报价淘宝seo是什么意思
  • wordpress站点图标seo优化排名营销
  • 医疗设计网站产品品牌策划方案
  • 天津市做网站的公司seo黑帽培训骗局
  • 日本军事最新消息西安百度seo
  • 中天建设招标网站网站关键词排名优化价格
  • 广州做营销网站公司云南seo网络优化师
  • 西安网站制作培训网络推广方式
  • 黑龙江省住房和城乡建设网站淄博网站制作优化
  • 做什么网站好百度推广账户搭建
  • 唐山正规做网站的公司百度投诉电话人工客服24小时
  • 有口碑的网站建设公司页面优化算法
  • 上海网站建设yes404网上销售培训课程
  • 腾讯有做淘宝客网站吗网站软件免费下载
  • 房地产公司网站下载市场推广策略
  • 怎样做网站卖东西 自己有货海南百度总代理
  • 广州番禺区天气预报台州seo服务
  • 网站功能架构图怎么做seo方案书案例
  • 北京网站开发公司大全保定seo推广外包
  • 网站免费网站app网络推广包括哪些
  • 毕业设计网站建设流程百度推广和优化哪个好
  • 商务网站建设详细流程深圳网络推广专员
  • 视频网站备案怎么做线上推广具体应该怎么做
  • 电子商务网站的全面建设淘宝代运营1个月多少钱
  • 深圳网站开发招聘现在学seo课程多少钱
  • DW做注册网站常德网站优化公司
  • 怎么看一个网站用什么系统做的深圳网站优化推广