GwWuYou 8adce14b43 docs(pool): 添加对象池系统文档
- 创建了对象池系统的完整技术文档
- 详细说明了核心组件包括IPoolableObject接口和IObjectPoolSystem接口
- 描述了AbstractObjectPoolSystem抽象类的实现机制
- 解释了对象池的设计特点和工作原理
- 列出了对象池系统的典型使用场景
- 提供了完整的API参考和生命周期管理说明
2026-01-11 21:12:45 +08:00
..

对象池系统 (Object Pool System)

概述

GFramework 的对象池系统是一个高效的内存管理机制旨在减少垃圾回收GC压力通过复用对象实例来提高应用程序性能。该系统实现了对象的创建、获取、释放和销毁的完整生命周期管理。

核心组件

IPoolableObject 接口

定义了可池化对象的行为规范,所有池化对象都需要实现此接口:

  • OnAcquire(): 当对象从池中获取时调用,用于初始化或重置对象状态
  • OnRelease(): 当对象被放回池中时调用,用于清理对象状态
  • OnPoolDestroy(): 当对象池被销毁时调用,用于执行最终清理

IObjectPoolSystem 接口

定义了对象池系统的基本操作:

  • Acquire(TKey key): 从指定键的对象池中获取一个对象
  • Release(TKey key, TObject obj): 将对象释放回指定键的对象池
  • Clear(): 清空所有对象池

AbstractObjectPoolSystem 抽象类

实现了 IObjectPoolSystem 接口的具体逻辑:

  • 使用字典存储多个对象池,以键区分不同的对象池
  • 提供获取和释放对象的方法
  • 通过抽象方法 Create 让子类决定如何创建对象
  • 在系统销毁时自动清理所有对象池

设计特点

  1. 类型安全: 使用泛型参数确保类型安全
  2. 多池管理: 支持使用不同键管理多个对象池
  3. 生命周期管理: 通过接口方法精确控制对象的生命周期
  4. 内存效率: 通过复用对象减少内存分配和垃圾回收

工作原理

  1. 获取对象 (Acquire): 如果池中有可用对象,则从池中取出;否则创建新对象
  2. 释放对象 (Release): 调用对象的 OnRelease 方法后将其放回池中
  3. 创建对象: 通过抽象方法 Create 由子类实现具体的创建逻辑
  4. 清理: 在系统销毁时调用 OnDestroy 方法清理所有对象池

使用场景

  • 频繁创建和销毁的临时对象
  • 高性能要求的系统需要减少GC压力
  • 对象创建成本较高的情况