1

我有一堆对象存储在几个文件中,我需要在我的应用程序开始时将它们加载到内存中,这就是我的做法:

    FileInputStream fis = null;
    ObjectInputStream ois = null;
    Object result = null;
    try {
        fis = new FileInputStream(inFile);
        ois = new ObjectInputStream(fis);
        result = ois.readObject();
        //and then do something with result

问题是,当我尝试加载一个HashMap<Integer, int[]>大小超过 500k 的 object() 时,它会在我的手机上花费很长时间。我不确定这是否是 ObjectInputStream 的问题,如果是,是否还有其他更快的方法可以从文件中存储和检索对象?越快越好,非常感谢。

4

2 回答 2

1

您可以使用Protocol Buffers或 Android 的本机序列化:Parcel

更新:

为什么要在一个文件中存储这么多对象并同时将它们全部加载到内存中?正如您发现的那样,它需要很长时间并且使用大量内存。你需要这个有什么特别的原因吗?

您应该使用数据库 - 它允许您选择性地查询数据并仅加载您在特定时间需要的对象。

于 2011-05-18T10:36:44.617 回答
0

您是否尝试过将 FileInputStream 包装到 BufferedInputStream 中?它最大限度地减少了与底层流的昂贵交互。

...
ois = new ObjectInputStream(new BufferedInputStream(fis));
...
于 2011-05-18T12:28:03.547 回答