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

6.1 内存模式概述

Bruce Powel Douglass大师介绍-CSDN博客

嵌入式软件开发从小工到专家-CSDN博客

C嵌入式编程设计模式源码-CSDN博客

“内存管理模式”介绍了几种内存管理的模式,每种模式都针对特定的系统需求和约束设计。

6.2 静态分配模式(Static Allocation Pattern)

静态分配模式适用于系统简单、负载高度可预测和一致的情况。在适用的场合,这种模式使得系统易于设计和维护。所有对象都在系统初始化期间分配,这意味着如果设计时能够知道内存负载,并且能够为最坏情况分配足够的内存,系统在初始化后的执行通常会比使用动态分配时更快,运行时执行通常也更可预测。由于不进行内存释放,因此不存在内存碎片问题。

6.3 池分配模式(Pool Allocation Pattern)

池分配模式适用于不能处理动态内存分配问题的系统,但又比静态分配模式允许的对象更复杂。这种模式通过在启动时创建对象池,按需向客户端提供对象,解决了动态内存分配的非确定性时序和内存碎片化问题。系统可以处理不确定性的对象分配,因此比静态分配模式扩展到更复杂的系统。这种模式特别适用于许多不同客户端可能需要的一些常见对象。

6.4 固定大小缓冲区模式(Fixed Sized Buffer Pattern)

固定大小缓冲区模式提供了一种真正的动态内存分配方法,不受内存碎片化的影响。这种模式通过限制内存分配的块大小,解决了内存碎片化问题,但可能导致内存使用效率降低。这种模式适用于复杂到无法预测内存分配顺序的系统,且无法为所有可能的最坏情况分配足够内存的情况。

6.5 智能指针模式(Smart Pointer Pattern)

智能指针模式通过将指针转化为对象,解决了指针相关的常见缺陷。智能指针作为对象,可以有构造函数和析构函数,以及可以确保其前置条件不变量(即指向有效内存)得到满足的操作。这种模式优化了个别协作,确保当所有指向它们的智能指针都被销毁时,对象也会被销毁。

6.6 垃圾收集模式(Garbage Collection Pattern)

垃圾收集模式通过自动查找和回收不再可访问的对象,解决了内存泄漏问题。这种模式通过移除程序员显式内存释放的责任,有效地消除了由此产生的缺陷。然而,这种模式可能需要较多的运行时开销,并且可能影响系统的实时性能。

6.7 垃圾合并模式(Garbage Compactor Pattern)

垃圾合并模式是垃圾收集模式的变体,它通过在堆上维护两个内存段来解决内存碎片化问题。在垃圾收集过程中,活动对象从一个段移动到另一个段,使得目标段中的对象相邻排列,从而在该段开始时形成一个连续的内存块。这种模式不需要程序员释放对象,也不会随着系统运行时间的增加而导致内存碎片化的单调增加。

每种模式都有其适用场景和优缺点,选择合适的内存管理模式对于构建高效且健壮的实时和嵌入式系统至关重要。

http://www.lryc.cn/news/290677.html

相关文章:

  • Python中容器类型的数据
  • 虚拟机安装Centos8.5
  • ENVI下基于知识决策树提取地表覆盖信息
  • arco design table遇到的一些问题
  • Linux系统——文本三剑客
  • 代码随想录算法训练营Day38|动态规划理论基础、509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯
  • C++中的指针空值nullptr
  • 【Linux网络编程】网络编程套接字(1)
  • vite+ts+vue3打包的过程和错误
  • 80.双指针实现删除有序数组中的重复项 II(中等)-面试经典150题
  • 基于大数据的B站数据分析系统的设计与实现
  • 机器学习模型预测贷款审批
  • Linux实验记录:使用firewalld
  • Vue之初识Vue CLI 脚手架
  • [Tcpdump] 网络抓包工具使用教程
  • MongoDB常用命令
  • 强敌环伺:金融业信息安全威胁分析——整体态势
  • FreeRTOS简介
  • 51单片机点灯
  • sql注入之union联合注入
  • activiti解决实现ExecutionListener spring 自动注入@Autowired为null问题
  • 【Lazy ORM 整合druid 实现mysql监控】
  • 【Deeplabv3+】Ubutu18.04中使用pytorch复现Deeplabv3+第三步)-----CityscapesScripts生成自己的标签
  • 《动手学深度学习(PyTorch版)》笔记3.3
  • OpenGL ES 渲染 NV21、NV12 格式图像有哪些“姿势”?
  • P8813 [CSP-J 2022] 乘方 题解
  • Ubuntu 常用命令、docker 常用命令、unzip常用命令、tar常用命令
  • 保护医疗数据不受威胁:MPLS专线在医疗网络安全中的角色
  • Java面试题夺命连环问
  • 华为策略路由+NQA配置