是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