java - 安卓/java : use something else rather then ObjectInputStream to load an object

标签 java android performance load objectinputstream

我有一堆对象存储在几个文件中,我需要在我的应用程序启动时加载到内存中,我是这样做的:

    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

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

最佳答案

你可以使用 Protocol Buffers或 Android 的原生序列化:Parcel .

更新:

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

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

关于java - 安卓/java : use something else rather then ObjectInputStream to load an object,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6043299/

相关文章:

java - java中的同步(对象和静态方法)

java - 为什么 DrawerLayout 和 ActionBar 不适用于平板电脑?

android - 替代方法在使用 ANDROID_ID 时删除安全警告以及如何获取设备 ID?

在单独的线程上运行的android服务

java 说 'cannot find symbol' 尽管方法是在类中声明的

java - ApplicationListener 与 ServletContextListener

java - Apache POI autoSizeColumn() 无法正常工作

javascript - 我应该删除 Angular watch 吗?

java - 如何在更新 Oracle 中的列 Clob 时提高性能?

.net - 用于测量操作时间的最合适的性能计数器类型是什么?