Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Llamar a DeleteLocalRef en la interfaz nativa de java

Estoy devolviendo un jstring de un método JNI. Elimino la referencia local a ella antes de devolver el valor.

JNIEXPORT jstring JNICALL TestJNIMethod( JNIEnv* env, jclass ) { jstring test_string = env->NewStringUTF( "test_string_value" ); env->DeleteLocalRef( test_string ); return test_string; } 

¿Podría el método JAVA llamante seguir siendo capaz de acceder al jstring devuelto o el recolector de basura limpiaría la memoria?

One Solution collect form web for “Llamar a DeleteLocalRef en la interfaz nativa de java”

No, no obstante, tu código funcionará en versiones de Android anteriores a ICS. De ICS en este código correctamente fallará.

En general, no es necesario borrar las referencias locales, una vez que la función JNI regrese a Java, las referencias obtendrán GC'd.

La excepción a esta regla es si se crean muchos de ellos, tal vez en un bucle. Entonces es posible llenar la tabla de referencia local. Consulte IBM: Descripción general de las referencias de objetos JNI .

Debe leer JNI Local Reference Changes en ICS . Incluso si no está escribiendo para Android, todavía identifica muchos errores comunes.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.