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

Crach log信息:

jni crach.png

復(fù)現(xiàn)步驟:

頻繁的點擊登錄按鈕 (頻繁調(diào)用xxkey.so)

分析:

這是因為在登錄的時候,需要讀取so庫中的公鑰信息,所以頻繁的通過JNI機制進(jìn)行了java和C相互調(diào)用,這樣就產(chǎn)生了很多垃圾。查看c代碼,發(fā)現(xiàn)沒有釋放空間,所以就crach了。

解決辦法:

在c文件中,每次return返回數(shù)據(jù)前釋放資源:

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

運行程序 測試,果然ok了。JNI技術(shù)在Android開發(fā)中用的越來越普遍了,需要花時間研究研究啦。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容