再谈内存分配器的优缺点

news2024/11/29 0:56:29

结论

在频繁申请、释放内存的工作场景,建议需要考虑定制化的内存分配器Allocator

优点

那么用内存分配器有那些好处呢?在近段研究和积累看来,主要有以下几点:

  • 拥有连续内存的访问优势
  • 较浅的申请、释放栈访问深度;甚至可以无锁访问
  • 避免与全局内存管理器多线程锁竞争。如图所示:
    在这里插入图片描述
  • 可有效避免内存碎片的形成

谈点缺点

对于它的劣势,说不上缺点,可能就是增加了一点风险。

风险

内存corruption风险,即使使用Glibc Malloc内存管理器,风险依然同样存在!

在C语言体系里,管理器通常在申请内存的头部或尾部预留了控制信息,以利于"随身"的内存管理。

所以在这点上,无论是定制内存管理器Allocator,还是用Glibc Malloc全局内存管理器,将具有相同数量的内存控制块信息。

只是业务层使用的内存管理器Allocator,因为申请内存位置之间更接近,改写风险会稍大一点。

但整体上应该瑕不掩瑜 😃 很难有十全十美的设计!

注意: 如果申请内存控制块信息被意外改写,将导致内存损坏、甚至是破坏,造成非法访问异常!


使用经验ACE内存管理器

  • Allocator体系

可以对其进行层叠,以实现类似ACE_Malloc<...> 无限内存的效果

  • ACE_Malloc< ACE_MEM_POOL_1, ACE_LOCK >体系

对于特别是ACE_Malloc< ACE_Local_Memory_Pool, ACE_LOCK >
根据业务使用特点,业务应在初始化时,首先申请一大块内存,例如,MB级别,然后立即将其释放;后期更小、随机大小的小块内存申请释放,就在这个大的内存池中分配,而不是默认以PageSize为单位的内存池大小。、

当然,ACE_Malloc<...> 无限内存内存的特点,当池子中内存不足时,依然会以满足当前申请量,但实际为PageSize大小整数倍的数量申请新内存,形成更大的池子

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/992184.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

攻防世界-WEB-upload1

打开靶机上传文件 必须上传图片&#xff0c;F12审计一下代码 发现校验代码 一句话木马&#xff0c;使用菜刀连接 通过bp修改文件类型 get成功&#xff0c;证明文件已经上传 修改POST请求 得到上传成功的文件&#xff0c;请求文件名 得到flag cyberpeace{5a97279c34e62…

The timestamp difference between admin and executor exceeds the limit.解决办法

前言&#xff1a; 使用xxjob报错了&#xff0c;图文如下&#xff1a; 2023-09-09 10:28:54 [com.xxl.job.core.thread.JobThread#run]-[127]-[Thread-191] ----------- xxl-job job execute start ----------- ----------- Param: 2023-09-09 10:28:54 [com.xxl.job.core.thre…

企业架构LNMP学习笔记27

Keepalived的配置补充&#xff1a; 脑裂&#xff08;裂脑&#xff09;&#xff1a;vip出现在了多台机器上。网络不通畅&#xff0c;禁用了数据包&#xff0c;主备服务器没法通讯&#xff0c;造成备服务器认为主服务器不可用&#xff0c;绑定VIP&#xff0c;主服务器VIP不会释放…

安卓如何设置开机启动某个程序?init.rc给你搞定

一、如何设置开机启动某个程序&#xff1f; 1.需求描述 最近有个项目需要在Android开机启动之后&#xff0c;自动执行一个C语言编写的程序&#xff1a;pengd 该程序运行时需要修改网络ip地址及其他网络操作&#xff0c;所以需要root权限 根据需求描述&#xff0c;我们需要做…

算法-88.合并两个有序数组-简单

给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2&#xff0c;另有两个整数 m 和 n &#xff0c;分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中&#xff0c;使合并后的数组同样按 非递减顺序 排列。 注意&#xff1a;最终&#xff0c;合并后数组…

【Idea】IntelliJ IDEA 2023版本,.java文件报 no scalac found to compile scala sources问题

maven install没问题&#xff0c;新版本idea中编译则报错。 原因应该是新旧版本对Scala Compiler的调用逻辑有差异。造成的&#xff0c;因为同样的工程&#xff0c;在旧版本里可以正常编译。 解决方法 Settings > Build, Execution, Deployment > Compiler > Scala…

【区块链】DeFi是什么?大白话科普文

对于一些没有玩过区块链、或者说没有真金白银的体验过这个虚拟世界的小伙伴来说,这篇文章可以帮你了解 DeFi。致力于帮你在这个线上走出这一步。 当然这不是理财建议。 文章目录 前言什么是去中心化金融?有哪些 DeFi 项目DeFi由哪几部分构成?热门DeFi项目有哪些?前言 Def…

【C++】封装map和set(红黑树实现)

前言&#xff1a; 前面&#xff0c;我们学习了set和map的用法&#xff0c;这两个容器可以完成查找&#xff0c;排序等操作&#xff0c;后来我们在学习过二叉搜索树的基础上又学习了两种特殊的二叉搜索树——AVL树和红黑树&#xff0c;他们俩可以是效率进一步提高&#xff0c;其…

stm32f103rct6系统结构框图

一、其中&#xff0c;APB1总线和APB2总线的区别有&#xff1a; 1、时钟频率&#xff1a; APB1是低速总线&#xff08;一般为36M&#xff09;&#xff0c;这意味着APB1总线上的外设运行在较低的时钟速度下&#xff0c;适合处理一些低速外设&#xff0c;如USART、I2C等。 APB2…

工作新时代,腾讯轻联塑造高效办公未来

腾讯轻联&#xff1a;开启便捷、高效的集成新纪元 ⭐ 写在前面⭐ 使用模板快速起步⭐ 自定义流程初体验⭐ 无与伦比的集成强者⭐ 写在最后 ⭐ 写在前面 在当今竞争激烈的商业环境中&#xff0c;提高企业的办公效率和工作流程自动化变得至关重要。腾讯轻联&#xff0c;作为新一…

对于pytorch和对应pytorch网站的探索

一、关于网站上面的那个教程: 适合PyTorch小白的官网教程&#xff1a;Learning PyTorch With Examples - 知乎 (zhihu.com) 这个链接也是一样的&#xff0c; 总的来说&#xff0c;里面讲了这么一件事: 如果没有pytorch的分装好的nn.module用来继承的话&#xff0c;需要设计…

营销邮件主题怎么写?编写邮件主题的技巧?

如何创建营销邮件主题&#xff1f;制作EDM邮件主题的方法策略&#xff1f; 营销邮件主题在整个营销邮件中起着至关重要的作用&#xff0c;它是吸引读者打开邮件的第一步。蜂邮EDM将分享一些关于如何撰写令人惊艳的营销邮件主题的技巧&#xff0c;帮助您吸引更多的目标受众。 …

OpenCV 08(图像滤波器 算子)

一、 索贝尔(sobel)算子 边缘是像素值发生跃迁的位置&#xff0c;是图像的显著特征之一&#xff0c;在图像特征提取&#xff0c;对象检测&#xff0c;模式识别等方面都有重要的作用。 人眼如何识别图像边缘? 比如有一幅图,图里面有一条线,左边很亮,右边很暗,那人眼就很容易…

【Spring面试】Spring事务(图文详解)

概念 一个事务包含两个及两个以上的步骤 Spring是没法提供事务的&#xff0c;Spring事务的本质其实就是数据库对事务的支持&#xff0c;没有数据库的事务支持&#xff0c;spring是无法提供事务功能的。真正的数据库层的事务提交和回滚是通过binlog或者redo log实现的。 事务…

Vuex仓库的创建

vuex 的使用 - 创建仓库 文章目录 vuex 的使用 - 创建仓库1.安装 vuex2.新建 store/index.js 专门存放 vuex3.创建仓库 store/index.js4 在 main.js 中导入挂载到 Vue 实例上5.测试打印Vuex 1.安装 vuex 安装vuex与vue-router类似&#xff0c;vuex是一个独立存在的插件&#x…

容器编排学习(三)端口映射与Harber镜像仓库介绍

一 对外发布服务&#xff08;端口映射&#xff09; 1 概述 新创建容器的IP 地址是随机的 容器在重启后每次 IP 都会发生变化 容器服务只有宿主机才能访问 如何才能使用容器对外提供稳定的服务? 容器端口可以与宿主机的端口进行映射绑定 从而把宿主机变成对应的服务&a…

Revit 几何体的三种上层应用:特征造型、体量和纯粹几何

排除掉墙梁板柱这些和建筑各专业相关的构件&#xff0c;Revit 的上层应用中&#xff0c;有三类和几何相关的应用&#xff0c;特征造型、体量和纯粹几何。这也是通常三维建模软件的几种基础建模组织形式。 特征造型 几何特征造型是一种设计方法&#xff0c;它强调使用几何学原理…

电子产品CE认证申请,CE-RED认证

CE认证&#xff0c;即只限于产品不危及人类、动物和货品的安全方面的基本安全要求&#xff0c;而不是一般质量要求&#xff0c;协调指令只规定主要要求&#xff0c;一般指令要求是标准的任务。 构成欧洲指令核心的"主要要求"&#xff0c;在欧共体1985年5月7日的&…

亚马逊,速卖通,国际站卖家自己做测评补单有什么价值,怎么做?

对于卖家而言&#xff0c;测评资源确实是一项宝贵的财富。通过自养号和广告相结合的策略&#xff0c;可以快速有效地提升产品销量、增加转化率以及提高Listing的权重。这是一个很好的方法来优化产品在平台上的表现 现在很多卖家都选择自己养号下单&#xff0c;自己做测评 1.可…

【AI】机器学习——线性模型(逻辑斯蒂回归)

文章目录 3.3 逻辑斯蒂回归3.3.1 逻辑回归介绍对数几率函数sigmod函数几率 3.3.2 逻辑回归模型3.3.3 参数求解逻辑斯蒂回归策略 3.3.4 损失函数3.3.5 应用&#xff1a;语句情感判断3.3.6 多角度分析逻辑回归信息论角度数学角度与朴素贝叶斯对比 3.3.7 从二分类到多分类问题多次…