【问题标题】:JNI local reference table overflow, view complete contents of reference tableJNI本地引用表溢出,查看引用表完整内容
【发布时间】:2015-09-02 08:15:32
【问题描述】:

在运行我用 rhomobile 构建的 android 应用程序几分钟后,我遇到了JNI ERROR (app bug) local reference table overflow (max=512)

输出该表的最后10个条目都是Json rpc字符串:

java.lang.String "{"jsonrpc": "2.0... (43 chars)

有时是 47 个字符。

我不知道这个错误是从哪里来的,所以一个好的开始是查看整个字符串对象(所以 ... 部分)。

这可以实现吗?如果可以,如何实现?

编辑

在溢出之前,我会每隔一段时间收到以下消息

art Attempt to remove local handle scope entry from IRT, ignoring

我怎样才能知道哪个本地句柄没有被删除?

【问题讨论】:

  • 搜索“本地引用表溢出”或“DeleteLocalRef”。我记得我发布了stackoverflow.com/questions/12088207/…stackoverflow.com/a/14872927/755804 这些帖子将提供一些解决该错误的线索,但您可能无法控制需要修复的代码。 (但如果它是开源的......)
  • 谢谢,但我已经读过了。正如你所说,它来自我无法控制的代码。我的想法是,如果我能看到这些字符串中的内容,我就能看到导致此溢出的原因。那么有没有办法扩展那些“...”?
  • PushLocalFrame() / PopLocalFrame() ?
  • 您的代码是否调用了运行几分钟的 Java 函数?如果是,您可能必须重构它并让 Java 调用 Java。可以在本地调用之间保留本地结构。
  • 至少我不知道。可能 rhodes 在后台执行此操作。即使我排除了我的 Java 本机扩展(所以只使用 js),也会发生错误:(我真的迷失在这个错误上。无论如何,谢谢你的想法

标签: java android java-native-interface rhomobile rhodes


【解决方案1】:

原来是 rhomobiles API 用于查询电池状态、启用条形码扫描和捕获关键事件时发生错误。

我通过升级到 rhodes 5.2.2 解决了我的 Android 4.0.4 设备上的问题。但是,升级对我的其他运行 Android 5 的设备没有帮助。作为对我在摩托罗拉 rhodes 讨论中的帖子的回答,我被告知他们正在解决 5.3 rhodes 版本的问题,所以我希望它会得到修复未来。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多