我有几个100k值的大型double和long数组,每个都需要在给定时间进行计算才能进行计算,即使使用largeHeap请求Android操作系统也没有给我足够的内存,并且我在大多数测试设备中不断出现内存异常。所以我去研究如何克服这个问题,根据我在previous question得到Waldheinz的答案,我实现了一个基于文件的数组,使用RandomAccessMemory获取通道,然后使用按照建议使用MappedByteBuffer,并使用MappedByteBuffer asLongBuffer或asDoubleBuffer。这完美,我100%消除了outofmemory异常。但表现很差。我得到很多调用来获取(一些索引),每个调用大约需要5-15毫秒,因此用户经验被破坏
一些有用的信息:
有关如何让它更快的任何建议吗?
答案 0 :(得分:2)
方法1
索引数据 - 添加快速搜索指针
这将导致单个文件跳转(要查找的单个存储桶)和最多100个元素的迭代。
方法2
利用轻量级嵌入式数据库。即MapDB支持Android。