jni 內存泄露 local reference table overflow (max=512)


01-02 00:02:35.064: E/dalvikvm(4223): JNI ERROR (app bug): local reference table overflow (max=512)

 

向JNI傳遞大量的數據,或new出大量對象時,如果不及時釋放,則會造成上述錯誤。

 

1.在將java string轉換為native string之后,要調用ReleaseStringUTFChars釋放。

 

if (MNull != pszPath && MNull != strJString)
{
env->ReleaseStringUTFChars(strJString, pszPath);
}

2.用完java傳遞過來的obj之后,調用(env)->DeleteLocalRef(obj);釋放

 

參考資料:

http://stackoverflow.com/questions/4174453/android-native-process-provoke-referencetable-overflow-after-a-while-android-n

 

http://stackoverflow.com/questions/9372373/referencetable-overflow-max-512-jni


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM