Failed adding to JNI pinned array ref table (1024 entries)

Crach log信息:

jni crach.png

复现步骤:

频繁的点击登录按钮 (频繁调用xxkey.so)

分析:

这是因为在登录的时候,需要读取so库中的公钥信息,所以频繁的通过JNI机制进行了java和C相互调用,这样就产生了很多垃圾。查看c代码,发现没有释放空间,所以就crach了。

解决办法:

在c文件中,每次return返回数据前释放资源:

(*env)->ReleaseByteArrayElements(env,barr, pBarr, 0);

运行程序 测试,果然ok了。JNI技术在Android开发中用的越来越普遍了,需要花时间研究研究啦。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容