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开发中用的越来越普遍了,需要花时间研究研究啦。

你可能感兴趣的:(Failed adding to JNI pinned array ref table (1024 entries))