1

假设我有各种 text/json/xml/whatever 文件(本地存储在 assets 目录中),大小从 20 到 500 KB。假设这些文件将在整个应用程序中被频繁引用,最好是:

A)在第一次请求时读取文件一次,并将数据存储在变量中

或者

B)每次请求时读取文件,获取请求的信息,然后让GC清理?

来自web-dev,我通常使用选项(A),但我想知道移动设备的存储限制是否使B在这种情况下(Android应用程序开发)更受欢迎。

蒂亚。

4

3 回答 3

1

您可以通过压缩将数据存储到内存中。它会在任何时候减少您的内存占用。因此该技术可以适用于PC和手机。稍后当您需要数据时,读取并解压缩它。所以读取文件一次,然后压缩并存储在内存中。下面的例子使用 GZIPOutputStream 压缩一个字符串。

public static String compress(String str){
    ByteArrayOutputStream out = new ByteArrayOutputStream();
    GZIPOutputStream gzip = new GZIPOutputStream(out);
    gzip.write(str.getBytes());
    gzip.close();
    return out.toString("ISO-8859-1");
 }
于 2012-04-18T05:46:00.007 回答
0

这取决于文件的总大小、访问频率和您的目标客户。虽然高端手机的内存非常大,但内存较少的低端系统很多。它可能应该使用一些 LRU 缓存来达到平衡。

于 2012-04-20T01:40:08.590 回答
0

如果文件被频繁请求,肯定最好读取一次文件并存储在缓存中。

您还可以阅读这篇题为Google 如何教我在 HighScalability 网站中缓存和兑现的文章。

于 2012-04-18T05:15:13.157 回答