2016-06-29 6 views
1

Вот простой тестовый код, который я написал для тестирования функции compactRealm.Realm Android: compactRealm не работает должным образом

private void compactRealmTest(int count){ 
    Realm realm = Realm.getDefaultInstance(); 
    for(int i=0;i<count;++i) { 
     realm.executeTransaction(new Realm.Transaction() { 
      @Override 
      public void execute(Realm realm) { 
       Person p = Person.getRandomPerson(); 
       realm.copyToRealm(p); 
      } 
     }); 
     final RealmResults<Person> personList = realm.where(Person.class).findAll(); 
     realm.executeTransaction(new Realm.Transaction() { 
      @Override 
      public void execute(Realm realm) { 
       int size = personList.size(); 
       for(int i=0;i<size;++i){ 
        personList.deleteFirstFromRealm(); 
       } 
      } 
     }); 
    } 
    realm.close(); 
} 

Эта функция вставляет объект и немедленно удаляет этот объект из Realm. После окончания этой функции область db не будет содержать никаких объектов. Я заметил, что, хотя после выполнения этой функции не было объектов, размер файла области стал ~ 4,5 МБ (после вызова compactRealmTest(1000)). Я решил сжать царство, вызвав функцию compactRealm(). Размер файла был уменьшен с ~ 4.5MB до 3.5MB. Почему в Realm по-прежнему используется 3.5MB, хотя в области нет объектов?

+0

вы получили никакого ответа или ссылку по этому вопросу? –

+0

Попробуйте мое решение: http://stackoverflow.com/questions/34217476/android-realm-large-file-size/42959238#42959238 –

ответ

0

В настоящее время Realm не освобождает место на диске автоматически, но вместо этого повторно использует пространство при необходимости. Это означает, что если вы снова добавите объекты, вы также не увидите увеличения размера файла.

Если вы хотите, чтобы уменьшить размер файла на на диске, вы можете использовать Realm.compactRealm(config): https://realm.io/docs/java/latest/api/io/realm/Realm.html#compactRealm-io.realm.RealmConfiguration-

+0

Я думаю, что его вопрос в том, почему 'compact' восстанавливает 1 МБ пространства (4.5 MB = > 3,5 МБ), но не более, даже в пустом царстве. – EpicPandaForce

+0

Такая же проблема. Решение не решено. – SmallSani

Смежные вопросы