Android - 太大的数组导致outofmemory错误

时间:2016-03-29 18:18:43

标签: android arrays performance out-of-memory

所以在我的Android应用程序中,初始化的第一件事是将在我的Astar寻路中使用的Tile个对象。 Tile对象是一个类,它包含磁贴的x-y坐标,G-和H-成本。该应用程序正在为每个楼层初始化拼贴(意味着另一个地图)我已经对Astar进行了优化,因此每层楼总共生成6000块拼贴(楼层为800x800)并且我必须在使用Astar进行路径搜索之前初始化所有楼层,因为用户可以从例如1楼到2楼。因此,瓷砖必须准备好#34;要使用的。它总共可以初始化3个楼层,然后用户无法再做任何事情,因为应用程序会因为内存而崩溃。

创建Tile个对象并将其存储到Tile的三维数组中; Tile[FLOORS][HEIGHT][WIDTH]。问题是我的地图非常大,这使得这个数组也很大。我想到的第一件事就是使用数据库来存储所有的瓷砖,但问题是,当Astar算法试图找到一个路径从A点到B点考虑所有查询时,遍历每个磁贴都是低效的。注射。 < - 我仍然想知道是否有一种更快的方法,我还没有想到(使用数据库)。

我直接搜索了整个StackOverFlow,但没有找到解决我问题的方法。其他人被告知要使用数据库,因为他们的数组太大了,但在我的情况下,瓷砖必须结构为Tile[floor][y][x]才能快速访问它们。

那么有没有办法将所有的磁贴存储到一个数组中,将它们从内存中释放出来,但在某种程度上需要在需要时重用它们?

0 个答案:

没有答案