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)

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

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

你可能感兴趣的:(可扩展的体系结构》,java,算法,jvm)