对象池
谈到临时工作缓冲区,对象池是通过避免释放和重新分配,来最小化和建立对内存使用控制的一种极好的方法,其理念是为对象创建建立自己的系统,它隐藏了所得的对象是新分配的还是从之前的分配中回收的,描述这个过程的典型术语是生成和回收对象,而不是在内存中创建和删除对象,当一个对象被回收的时候,只是隐藏它,使他休眠,直到再次需要它,此时它从之前的一个已回收对象中重新生成,并且来代替可能需要新分配的对象;
接下来 介绍一下对象池系统的快速实现。
该系统的重要特性是允许池化对象决定当需要回收时应该如何回收。下面IPoolableObject接口类很好的满足了该需求:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Assets.Scripts
{
public interface IPoolableObject
{
//void New();
void Respawn();
}
}
下面的ObjectPool类定义了一个相当简单的对象池实现
using Assets.Scripts;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ObjectPool<T> where T : IPoolableObject,new() {
private Stack<T> _pool;
private int _currentIndex = 0;
public ObjectPool(

本文介绍了一种内存管理技术——对象池,通过预分配和复用对象减少频繁分配与释放带来的开销。利用自定义接口和泛型类实现了对象池,支持对象的生成与回收,适用于需频繁创建销毁相同类型对象的场景。
最低0.47元/天 解锁文章
1210

被折叠的 条评论
为什么被折叠?



