Aufruf von DeleteLocalRef in der nativen Java-Schnittstelle

7

Ich gebe ein jstring von einer JNI-Methode zurück. Ich lösche den lokalen Verweis darauf, bevor ich den Wert zurückgebe.

%Vor%

Würde die aufrufende JAVA-Methode immer noch auf den zurückgegebenen jstring zugreifen können oder würde der Garbage Collector den Speicher aufräumen?

    
ssk 18.05.2013, 00:07
quelle

1 Antwort

18

Nein, es wird nicht funktionieren, aber Ihr Code wird bei älteren Android-Versionen als ICS funktionieren. Von ICS wird dieser Code korrekt fehlschlagen.

Im Allgemeinen müssen Sie keine lokalen Referenzen selbst löschen, sobald die JNI-Funktion zu Java zurückkehrt, werden die Referenzen GC'd erhalten.

Die Ausnahme von dieser Regel ist, wenn Sie viele davon erstellen, vielleicht in einer Schleife. Dann ist es möglich, die lokale Referenztabelle zu füllen. Siehe IBM: Überblick über JNI Objektreferenzen .

Sie sollten JNI Local Reference Changes in ICS . Selbst wenn Sie nicht für Android schreiben, identifiziert es immer noch viele häufige Fehler.

    
Eoin 06.06.2013 16:49
quelle

Tags und Links