多语言展示
当前在线:491今日阅读:26今日分享:39

Android使用JNI时ReferenceTable overflow

Android里使用JNI出现ReferenceTable overflow (max=1024)的解决方法
工具/原料
1

Android源码

2

NDK包

方法/步骤
1

最近在Android下实现对设备的操作,发现使用JAVA的输入流时会经常卡住,即一直处于等待状态,导致程序无法继续运行下去。

2

改用C语言测试,倒没有出现该问题,于时将相应操作封装成SO,再用JNI来调用。

3

没想到多次读写操作后出现了ReferenceTable overflow (max=1024)提示,然后程序就退出了。

4

后来发现是使用了buff = env->GetByteArrayElements(buffer, 0);之类的语句后没有使用env->ReleaseByteArrayElements(buffer, buf, 0);之类的语句进行释放造成的,在相应位置添加释放操作即可。END

推荐信息