需要帮助理解与IRT相关的Android JNI logcat

时间:2016-01-06 07:48:16

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

使用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. 是否需要处理与应用程序相关的内容。

1 个答案:

答案 0 :(得分:0)

浏览后的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

我正在尝试删除本地参考

WifiManager wifi = (WifiManager)getSystemService(Context.WIFI_SERVICE);
if (wifi.isWifiEnabled()){
//wifi is enabled
}

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

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