是JCLASS和jobject參考delete一個這樣正確的方式JNI deleteRef爲JCLASS和jobject
JNIEXPORT void JNICALL Java_method(JNIEnv *env,jobject, jobject objArray)
{
int n = env->GetArrayLength(objArray);
for (int i = 0; i<n ; ++i)
{
jobject sObject = env->GetObjectArrayElement(objArray, i);
jclass sObjectClass = env->GetObjectClass(sObject);
dosomething(sObjectClass, sObject);
env->DeleteLocalRef(sObject);
env->DeleteLocalRef(sObjectClass);
}
是的,對於本地引用,這是正確的。它應該防止參考表溢出。 – mkaes
爲什麼你需要在循環裏面雖然'GetObjectClass'?你期望數組中的元素具有不同的類型嗎? – Michael