java - 清除 Realm 表/数据库的正确方法?

标签 java android realm

我有一个包含大约 30 个字段的 Realm 对象,在添加和删除几个对象之后, Realm 似乎占用了相当多的空间。分配空间的大小似乎呈指数级增长:

10*(添加 100 + 全部删除)= 4 mb 数据

15*(添加 100 + 全部删除)= 33 mb 数据

20*(添加 100 + 全部删除)= 91 mb 数据

25*(添加 100 + 全部删除)= 179 mb 数据

image

此时 data\data\app_folder\files\default.realm 中的文件本身为 200 mb。

现在这个严重的问题可能是因为我没有正确地做某事。在每次插入之前我都会这样做

Realm realm = Realm.getInstance(context);

realm.beginTransaction();
realm.where(RealmSubmission.class).findAll().clear();
// if i use realm.allObjects(RealmSubmission.class).clear(); the leak is even bigger, i get to 170mb Data with 20*(add 100 + remove all) even though both calls do the same by looking at their semantics.
realm.commitTransaction();

将项目添加到 Realm 如下所示:

    for (Submission submission : submissionList){
        realm.beginTransaction();

        RealmSubmission realmSubmission = realm.createObject(RealmSubmission.class);
        RealmObjectUtils.copySubmission(realmSubmission, submission);

        realm.commitTransaction();
    }

有什么想法吗?

最佳答案

我做了一个简单的方法来在发生迁移异常时删除 Realm 数据库文件(用于开发)。 它还返回一个新的 Realm 实例以防止出现任何问题。

public Realm buildDatabase(){
    RealmConfiguration realmConfiguration = new RealmConfiguration.Builder(this).build();

    try {
        return Realm.getInstance(realmConfiguration);
    } catch (RealmMigrationNeededException e){
        try {
            Realm.deleteRealm(realmConfiguration);
            //Realm file has been deleted.
            return Realm.getInstance(realmConfiguration);
        } catch (Exception ex){
            throw ex;
            //No Realm file to remove.
        }
    }
}

关于java - 清除 Realm 表/数据库的正确方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26254881/

相关文章:

Java:字符串拆分为多个元素

java - Cloudant 1.0.1 Java 客户端 SDK 缺少 loadAttachment() API?

android - 我如何知道我的应用程序是由 Google Assistant 打开的,而不是正常启动的

ios - 将 Realm 添加到 watchkit 项目时出现 Mach-O header 错误

android - 从 Realm.io android 中删除单个对象(如果它仍然存在)

java - 在java中应该如何更好地处理这个异常?

java - 处理 PrintWriter 无法正常工作

Android,RecyclerView 触摸监听器未触发

android - 组合多个库以使用单个排除列表

Xcode 调试 Realm 问题