我正在开发一种语言应用程序,偶尔需要在一段时间内(通常在30秒内)分配大量内存。不幸的是,iOS发送低内存警告,有时会终止应用程序(大约5%的时间)。当然我不能依赖机会,所以我必须解决它。我正在尝试优化算法(它基本上是使用Levenshtein距离寻找拼写和声音的相似性)但我担心使用文件系统而不是内存会使处理过慢。如果我知道内存将很快发布,有没有办法回应低内存警告?还有其他建议吗?
一些细节:
编辑:大部分存储空间是一个C ++向量,英文单词大约200K。我必须将这些单词与拼写和语音相似性的一些潜在候选人进行比较。对于每个候选人,我必须遍历整个单词列表并计算Levenshtein距离。使用在函数中静态分配的相似性矩阵来计算距离。我仍然很困惑为什么我开始使用大约2 MB的词汇表,并在处理过程中最终得到70多MB的实时字节。
答案 0 :(得分:0)
如果占用太多内存,您无法绕过操作系统终止您的应用。当你得到低记忆警告并且希望不被击落时,你能做的最好的事情就是免费。请记住,在iOS中,所有应用程序共享相同的物理内存,并且没有交换,因此70MB很多。
如果你不确定你的应用为什么会占用这么多内存,那么可以尝试使用Allocations工具对其进行分析。