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