高并发内存池——单例模式在缓存的作用

单例模式

单例模式是一种创建型设计模式,旨在确保一个类只有一个实例,并提供一个全局访问点来访问该实例。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。++适用于需要全局统一管理、避免重复创建实例资源的情况下++。


单例模式在中心缓存的核心作用

前提:CentralCache(中心缓存)是内存池的核心枢纽,上连PageCache(页缓存),下接ThreadCache(线程缓存),负责统一管理内存Span(内存块)的分配、回收、合并等,是整个内存分配体系的核心。

而单例模式的作用是确保了CentralCache的某些特性。


我们可以根据中心缓存的需求来理解单例模式的作用:

1.CentralCache的核心责任是统一管控所有线程的内存申请与释放,我们需要保证的是其内存管理的全局唯一性!

如果其不是单例的,而是每个线程都有一个中心缓存,就会出现多种问题,比如出现多个CentralCache各自向PageCache申请内存,进而导致严重的内存碎片化。

2.避免多个实例导致的资源竞争与数据不一致的问题

中心缓存内部维护着不同大小的Span链表,这些链表是全局共享的临界资源。如果非单例模式下,需要对每个线程的CentralCache加锁,而单例模式下只需要对全局唯一的CentralCache的Span链表进行加锁保护,大大降低了难度。

3.简化内存池的设计与使用

实例的创建本身存在着天然的复杂性(实例创建存在则构造、拷贝、销毁等等多个实例的情况),这可能导致CentralCache将不再唯一,而单例模式则帮助避免了这些情况,并且只需要对内存、锁、链表等资源初始化一次,避免多实例重复占用资源。


由此我们得出了单例模式对中心缓存的核心作用为:

1.保证了唯一性,确保全局只有一个内存调度枢纽,实现内存的统一调用。

2.保证了一致性,避免多实例导致的数据混乱、资源竞争等问题,并且简化了临界资源的锁保护问题。

3.简化了中心缓存,使代码难度降低,降低了实例创建等的设计复杂性。

总结:单例模式强制整个程序只有一个CentralCache实例,确保所有线程的内存流转都经过同一个 "枢纽",实现内存的全局统一调度。

相关推荐
Zhang~Ling13 小时前
Redis 基础教程:从常用命令到实际业务场景
数据库·redis·缓存
程序员清风16 小时前
缓存、索引与数据结构的工程选择
数据结构·spring·缓存
code2cat17 小时前
【随笔】RAG语义缓存:问题很相似,答案就能直接复用吗
java·缓存·知识库·rag
小静AI工程实验室18 小时前
AI 应用缓存键怎么设计?租户、模型、提示词与索引版本的 7 项离线验证
缓存
北京地铁1号线18 小时前
后端开发:缓存(Cache)简介
后端·缓存·cache
李纲明18 小时前
WordPress 结账页一直转圈不跳支付:AJAX、缓存排除、支付回调和 REST 怎么逐层核
运维·ajax·缓存·wordpress·woocommerce·devdiy·结账
程序猿编码2 天前
纯 C++ 手写 LLM 推理引擎:分页 KV 缓存、连续批、多卡张量并行全部内置
c++·深度学习·缓存·大模型推理·自动微分·模型推理
code2cat2 天前
【随笔】RAG检索缓存:复用证据之前,先把权限和版本放进缓存键
java·人工智能·缓存·知识库·rag
牧瀬クリスだ2 天前
Redis五大数据类型全解析:从入门到实战
java·数据库·redis·后端·缓存
讯捷蓝达2 天前
HPE Nimble CS3000存储,断电恢复后,双控缓存异常,存储卷无法正常启动
缓存