jni 記憶體洩露 local reference table overflow (max=512)
阿新 • • 發佈:2019-02-10
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
向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