我目前遇到的问题是我的领域文件很大。如果我注释掉API调用,而API调用又将数据插入Realm以使它们一次运行一个,则文件大小大约为1 MB。但是,如果我在后台线程中异步调用它们(因为它们彼此不相关),则文件大小为16 MB。关于如何调试这个的任何想法?
答案 0 :(得分:1)
这是Realm功能的固有部分。当您在Realm中操作数据时,事后不会回收磁盘空间。这是因为这样做在性能方面是一项代价高昂的操作,没有背景,可能没有任何好处。
此行为与非常大的数据集一起出现的问题已在Realm GitHub(https://github.com/realm/realm-cocoa/issues/1159)之前讨论过。 Realm Cocoa工程师和负责Realm内部引擎的工程师都意识到了这个问题,正在探索如何在不引入性能开销的情况下尝试找到使系统更智能的妥协方法。
与此同时,我建议不要担心它,除非它实际上击中你认为不可接受的文件大小。如果出现这种情况,您可以使用[RLMRealm writeCopyToPath:error:]
显式生成Realm的副本,该副本将回收所有额外空间并将其交换到原来的位置。