Java 使用池<&燃气轮机;libGDX中的类

Java 使用池<&燃气轮机;libGDX中的类,java,libgdx,Java,Libgdx,如何以及为什么要在libGDX中使用?官方开发指南中没有关于这个类的内容,只是在一些示例中使用了它。这个类是一个优化,可以避免垃圾收集开销。缺点是必须手动管理池中的对象(您必须记住释放它们以便重用),并且您的对象必须是可重用的(例如,通常没有final字段) 在libGDX中,Pool类用于在每个帧上分配的对象(如操作和事件) 您可以忽略自己代码的池,直到遇到生成太多垃圾的问题 如何使用游泳池 池管理单一类型的对象,因此它由该类型参数化。通过调用获取从特定的池实例获取对象,然后通过调用自由将对象

如何以及为什么要在libGDX中使用?官方开发指南中没有关于这个类的内容,只是在一些示例中使用了它。

这个类是一个优化,可以避免垃圾收集开销。缺点是必须手动管理池中的对象(您必须记住释放它们以便重用),并且您的对象必须是可重用的(例如,通常没有
final
字段)

在libGDX中,
Pool
类用于在每个帧上分配的对象(如操作和事件)

您可以忽略自己代码的池,直到遇到生成太多垃圾的问题

如何使用游泳池
管理单一类型的对象,因此它由该类型参数化。通过调用
获取
从特定的
实例获取对象,然后通过调用
自由
将对象返回到池中。池中的对象可以选择性地实现接口(只需要存在
reset()
方法),在这种情况下,
pool
将在对象返回池时自动重置对象。对象最初是按需分配的(因此,如果您从未调用
get
,则池将不包含任何对象)

您必须实现自己的
Pool
子类,因为
newObject
方法是抽象的

泳池须知
小心泄漏对池对象的引用。仅仅因为您在池上调用了“free”,就不会使任何未完成的引用无效。如果你不小心的话,这可能会导致微妙的错误。如果将对象放入池中时对象的状态未完全重置,也可能会产生细微的错误。

但是当我确实需要它们时,我将如何实现它们?要实现它们,请查看libgdx附带的演示代码或libgdx本身。我知道一个事实,非常愤怒的机器人使用游泳池,就像舞台课一样。你不需要池,但是,正如P.T.所说,如果你在每个帧上分配对象,你可能需要考虑它们。