【问题标题】:Need help in understanding Android JNI logcat related to IRT需要帮助了解与 IRT 相关的 Android JNI logcat
【发布时间】:2016-01-07 18:24:01
【问题描述】:

使用 Android JNI,我创建了文件并使用文件描述符写入数据。

示例:-

dest = memalign( BLKSIZE,  sz);
if (dest == NULL) {
    LOGE("Unable to allocate memory");
    return -1;
}
memcpy(dest, bufferIn, sz);

int rc = write(fd, dest, sz);
LOGI("write %d bytes.", rc);

free(dest);
if(rc == -1) {
    LOGI("Error in writing : %d %s\n", errno, strerror(errno));
}

写入成功,我可以看到文件中的数据。但是对于每次写入,我都会登录 adb logcat。

01-06 12:46:36.831 16292-16806/com.test.example I/io: write 1024 bytes.
01-06 12:46:36.831 16292-16806/com.test.example W/art: Attempt to remove
local handle scope entry from IRT, ignoring.
  1. 此日志的含义:- 我无法理解,或者此日志的含义。

    /W/art:尝试从 IRT 中删除本地句柄范围条目,忽略/

  2. 是否与应用相关的事情需要处理。

【问题讨论】:

    标签: java android android-ndk java-native-interface


    【解决方案1】:

    浏览 android 源代码后位于 http://androidxref.com/5.1.1_r6/more/art/runtime/indirect_reference_table.cc?q=Attempt+to+remove+local+handle+scope+entry+from+IRT

    我正在尝试删除本地引用

    (*env)->DeleteLocalRef(env, jbIn);
    

    我们不需要自己删除本地引用,一旦JNI函数返回Java,引用就会被GC。

    本地引用会在从本地方法返回时被 JNI 丢弃,但这个过程与 Java 垃圾回收无关。通常,我们不需要担心本地引用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-19
      • 2016-05-03
      • 1970-01-01
      • 2021-01-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多