0
我寫我的代碼JNI錯誤(應用程序錯誤):本地參照表溢出
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 2015-02-12 10:46:03
是的,它應該像'env - > ReleaseStringUTFChars(j_file,filename.c_str()); env - > DeleteLocalRef(j_file); env - > DeleteGlobalRef(j_clazz); env - > DeleteLocalRef(clazz);',但它也有問題 – user4073982 2015-02-12 10:49:19
根據ART,在一次JNI調用期間,您的C++代碼創建了超過512個本地引用。但它似乎不是來自你的片段。你還有別的東西在跑嗎?另外,請將您的調試日誌的末尾與「最後10個條目」一起發佈。 – ph0b 2015-02-12 13:57:51