Skip to content

Commit db166b9

Browse files
committed
Update 06.3-Object Pool.md
1 parent 143c5af commit db166b9

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

06.3-Object Pool.md

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
对象池
22
============================
33

4-
## 目标
4+
## 目的
55

66
使用固定池重用对象,取代手动分配,释放对象,以此来达到提升性能和内存使用的目的
77

@@ -37,7 +37,7 @@
3737

3838
使用对象池使得我们二者兼顾:对于内存管理器而言,我们仅分配一大块内存直到游戏结束才释放它,对于内存池的使用者而言,我们可以按照自己的意愿来分配和释放对象。
3939

40-
## 对象池模式
40+
## (对象池)模式
4141

4242
定义一个保持着可重用对象集合的对象池类。其中的每个对象支持对其”使用中”(“in use”)状态的访问,以确定这一对象目前是否“存活”(“alive”)。当对象池初始化时,它预先创建整个对象的集合(通常为一块连续堆区域),并将它们都置为”未使用” (“not in use”) 状态。
4343

@@ -103,7 +103,7 @@
103103

104104
假如你使用了对象池,请注意一个潜在的矛盾:由于对象池在对象不再被使用时并不真正地释放它们,故它们仍占用内存。假如它们包含了指向其他对象的引用,这也将阻碍回收机制对它们进行释放。为避免这些问题,当对象池中的对象不再被需要时,应当清空它指向其他任何对象的引用。
105105

106-
## 例子
106+
## 示例
107107

108108
模拟现实的粒子系统常常会应用到重力,风力,摩擦力以及其他物理效果。在简化的示例中,我们只是在几帧的时间内将粒子沿着直线移动一些距离,并在结束后销毁它们。虽不比标准的电影水准,但足以为我们展示对象池的应用。
109109

@@ -336,7 +336,7 @@ void ParticlePool::animate()
336336

337337
这就是了,一个漂亮的,在创建和删除时具有常量时间开销的小对象池。
338338

339-
## 设计的一些考虑
339+
## 设计决策
340340

341341
如你所见,最简单的对象池实现几乎没什么特别的:创建一个对象数组并在它们被需要时重新初始化。实际项目中的代码可不会这么简单。还有许多扩展对象池的方法,来使其更加通用,安全,便于管理。当你在自己的游戏中使用对象池时,你需要回答以下问题:
342342

0 commit comments

Comments
 (0)