【发布时间】:2011-09-12 12:05:26
【问题描述】:
我在老一代 iPhone(ipod touch 第 1 代、第 2 代等)上遇到内存问题。这是由于我在加载和存储 170k 单词词典时分配的内存量。
这是代码(很简单):
string[] words = dictionaryRef.text.Split("\n"[0]);
_words = new List<string>(words);
这在开始时分配了大约 12mb 的存储空间,我认为 iphone 大约有 43mb。所以 + 纹理 + 声音 + 它往往会破坏操作系统。
在速度方面,使用二进制搜索访问是可以的。但它更有效地将其存储在内存中(并更有效地加载它)。
text.Split 似乎占用了很多堆内存。
有什么建议吗?
【问题讨论】:
-
"\n"[0]是什么?你不能只用'\n'吗? -
现在真正的问题:为什么需要 List 而不是普通数组?
-
我估计 170,000 个单词(可能被高估了)平均 10 个字符(每个字符一个字节)应该只占用大约 1.7MB。将数据存储为 char 数组的数组应该只占用这么多内存。
-
"\n"[0] 是它需要一个列表的要求。 - 我使用二进制搜索列表。大部分内存用于将列表拆分为单词。有没有办法优化它?
标签: iphone string memory dictionary mono