2010-12-06 25 views
6

Dans JNI, je construis un grand tableau en appelant SetObjectArrayElement() pour insérer un objet java créé localement dans le code JNI.Utilisation de DeleteLocalRef après SetObjectArrayElement lors de la construction d'un tableau dans JNI

Ma question est, après avoir inséré l'objet dans le tableau en utilisant SetObjectArrayElement(), le tableau stocke-t-il une référence de sorte que je puisse utiliser DeleteLocalRef pour libérer la référence locale à l'objet qui est inséré?

Répondre

10

Oui.

Le jobjectArray pointe vers un tableau de références. Lorsque vous définissez un membre de ce tableau sur une référence locale, vous avez fait une deuxième référence à l'objet. Si vous supprimez la référence locale, la référence dans le tableau reste. Le garbage collector ne disposera pas de l'objet réel tant qu'il n'y aura pas de références accessibles restantes.