Android中的地图结构和动态内存分配

时间:2012-07-21 21:20:02

标签: java android

最近我发布了一款完全用Java平台编写的游戏。目前我正在努力获得尽可能多的性能。似乎我的游戏案例中的问题是我在ArrayList可能更适合的地方使用更频繁的Map容器。为了解释我自己,我这样做是因为我害怕动态内存分配会在场景后面触发(Android上的Map / Tree结构)。也许在我不知道的Android / Java平台上有某种结构,它会为我提供快速搜索结果,另外在添加新元素时不会动态分配额外的内存?

更新: 例如,我使用ArrayList结构来保存我游戏的大部分粒子。当然,独立地(不是顺序地)删除它们是困难的,因为系统需要迭代整个容器只是为了删除一个实体对象(当然在最坏的情况下)。

2 个答案:

答案 0 :(得分:1)

我不担心因内存分配而导致速度减慢,除非您特别发现它是一个问题。内存分配并不是Android游戏减速的真正原因,而是GC运行时通常会出现问题。除非您经常在地图中插入和删除,否则您可能不必担心分配。

更新

您可能不想使用Map,而是在不再需要它时将粒子标记为“死”,并在更新迭代中使用该标志跳过它们。将对死粒子的引用存储在新的deadParticles ArrayList中,只需在需要新列表时从该列表中取出一个。这样,您就可以在需要时立即访问粒子。

答案 1 :(得分:0)

您是在预先分配元素对象,重新使用空白而不是分配新元素吗?