首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >objectbox DbMaxReadersExceededException

objectbox DbMaxReadersExceededException
EN

Stack Overflow用户
提问于 2021-07-28 08:33:56
回答 1查看 162关注 0票数 3

ObjectBox版本2.7.1,MaxNumReaders 500,@Entity计数超过50,有些实体有超过100 K的行。发布两周后,我们开始在Sentry中发现错误:无法开始读取事务(达到读取事务的最大值)--如何在调试器的早期阶段诊断问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-28 12:20:03

当您命中DbMaxReadersExceededException时,通常可以通过检查以下选项来解决问题:

  1. 因为您已经增加了最大读取器值,所以我假设您使用了多个线程。我要做的第一件事是验证您的线程逻辑。我们已经看到了应用程序不受限制地产生线程从而破坏读者的情况。每个线程在访问ObjectBox DB时都需要一个读取器。因此,获取DbMaxReadersExceededException可能是线程代码中出现问题的一个症状。
  2. 如果您有大量的短命线程(),您可能会看到诸如"W/Box:跳过低级别关闭以进行只读游标(非创建者线程)“或”提示:使用closeThreadResources()以避免完成回收事务“之类的日志。后一个提示是在线程退出之前应该做的事情。如果您只使用一个或两个Boxes,则可以在box:box.closeThreadResources()上调用该方法,否则BoxStore还提供一个名称相同的方法来对所有框执行此操作。
  3. 目前还有与未绑定线程池相关的悬而未决的问题。如果遇到这种情况,当前的解决方法是使用具有上限的线程池。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68557014

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档