我有一个包含大约 30 个字段的 Realm 对象,在添加和删除几个对象之后, Realm 似乎占用了相当多的空间。分配空间的大小似乎呈指数级增长:
10*(添加 100 + 全部删除)= 4 mb 数据
15*(添加 100 + 全部删除)= 33 mb 数据
20*(添加 100 + 全部删除)= 91 mb 数据
25*(添加 100 + 全部删除)= 179 mb 数据
此时 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/