Хорошей практикой является закрытие инстанса Realm после окончания его использования (мы в своем проекте не хранили ссылку, а открывали (getInstance()) и закрывали (close()) после каждой операции как чтения/так и записи, так как мы как и вы использовали только копии объектов). У рилма довольно сложная внутренняя система синхронизации версий между открытыми инстансами - на тредах с луперами (как UI-thread, к примеру) работает авто-рефреш, в других надо вызывать refresh() вручную (причем эта логика менялась от релиза к релизу и, возможно, что-то уже не актуально в написанном).
Для интереса я бы порекомендовал переписать методы добавив в них принудительное закрытие рилма.
protected open fun select(namePrimaryKey: String, primaryKey: String, clazz: KClass<T>) : T {
val realm = RealmConfigDB.getInstance()
// делаем копию объекта
realm.close()
return копию
}
Для интереса я бы порекомендовал переписать методы добавив в них принудительное закрытие рилма.