я пишу код,JNI ERROR (приложение ошибка): локальная Переполнение справочной таблицы
jclass clazz = env -> FindClass("java/lang/System");
jclass globalClass = reinterpret_cast<jclass>(env->NewGlobalRef(clazz));
jmethodID methodId = env -> GetStaticMethodID(globalClass, "load", "(Ljava/lang/String;)V");
jstring j_file = env -> NewStringUTF(filename.c_str());
env -> CallStaticVoidMethod(globalClass, methodId, j_file);
if(env -> ExceptionCheck())
{
env -> ExceptionDescribe();
env -> ExceptionClear();
LOG_E("Load library error!");
}
else
{
LOG_E("load library success");
}
env -> ReleaseStringUTFChars(j_file, filename.c_str());
env -> DeleteGlobalRef(clazz);
при запуске его, это ошибка, как
A/art(4412):
art/runtime/indirect_reference_table.cc:113] JNI ERROR (app bug):
local reference table overflow (max=512)` `A/art(4412):
art/runtime/indirect_reference_table.cc:113] local reference table dump:
Last 10 entries (of 512):
Я не знаю, почему, вы можете помочь меня?
Отпустите все. Вы не выпускаете 'j_file.' – EJP
Да, это должно быть realease все как' env -> ReleaseStringUTFChars (j_file, filename.c_str()); env -> DeleteLocalRef (j_file); env -> DeleteGlobalRef (j_clazz); env -> DeleteLocalRef (clazz); ', но у него также есть проблема – user4073982
Согласно ART, у вас более 512 локальных ссылок, созданных вашим кодом на C++ во время одного вызова JNI. Но это не похоже на ваш фрагмент. У вас есть что-нибудь еще? Кроме того, разместите в конце журнала отладки «Последние 10 записей». – ph0b