Meine native Methode hat eine Methode mit einem Rückgabewert von Byte [], also verwende ich "NewByteArray", um das Byte [] zuzuweisen, und verwende dann return, um das jbyteArray zurückzugeben. Soll ich das JbyteArray freigeben? Und wie man das jbyteArray freigibt? Danke. Ich bin ein Java Anfänger und mein Englisch ist arm.Wie man das jbyteArray freigibt?
Antwort
Sie möchten das Byte-Array nicht innerhalb Ihrer nativen Methode freigeben, da der Aufrufer der nativen Methode das Array in Java verwenden möchte.
Vorausgesetzt, dass Sie nicht über eine globale Referenz auf das erzeugte Array halten:
Der Kollektor Müll kann dann darauf achten, das Array-Objekt zur richtigen Zeit zu entfernen, da der lokale Bezug, dass die nativen Methoden hält an Das Array wird entfernt, sobald die Methode zurückgegeben wird. Hier
ist ein Beispiel dafür, wie eine solche native Methode aussehen könnte: How to return an array from JNI to Java?
Sie meinen, der GC kann das jbyteArray auto freigeben? Also brauche ich nichts zu tun? Vielen Dank. – cpdyj
@cpdyj wie Michael hingewiesen hat: "Es sei denn, Sie haben mit NewGlobalRef eine globale Referenz auf das Array erstellt" – Calculator
Vielen Dank. – cpdyj
- 1. Wie man json_object freigibt?
- 2. Wie man eine Schnittstelle freigibt?
- 3. Wie man dieses Array freigibt
- 4. Wie man mit Kanban freigibt?
- 5. wie man freigibt: MYSQL_ROW Reihe;?
- 6. Wie man einen Block freigibt
- 7. Wie man ein Objekt, das in einem Datensatz ist, freigibt?
- 8. Wie man die Hintergrundfarbe eines SKViews freigibt
- 9. Wie man Speicher von std :: deque freigibt?
- 10. Wie man pygame in eine Webseite freigibt
- 11. Wie man Webinhalte zwischen Eclipse-Projekten freigibt
- 12. Wie man primitive Variablen manuell freigibt?
- 13. Wie man Android MediaPlayer richtig freigibt
- 14. wie man malloc außerhalb der Funktion freigibt
- 15. Wie man einen Griff durch C# freigibt?
- 16. mysql: Wie man Speicherplatz freigibt (innodb)
- 17. Wie konvertiert unsigned char zu jbyteArray
- 18. Wie man einen Schlüssel drückt und ihn mit C# freigibt?
- 19. Wie man einen WPF mit einer Datenbank freigibt
- 20. C# Wie man ein Bild nach der Passworteingabe freigibt
- 21. Wie man ein Element in einem Zeigervektor freigibt?
- 22. ngrok + Local IIS: Wie man eine Website freigibt
- 23. Wie man eine generische TList <T> freigibt?
- 24. Wie man KEYPress in autopy oder pyautogui NICHT freigibt?
- 25. Wie man ein Objekt von einem Array freigibt?
- 26. C: Wie man den Anfangsabschnitt einer zugeteilten Zeichenkette freigibt?
- 27. Wie man zval in PHP5, das mit MAKE_STD_ZVAL erstellt wurde, freigibt?
- 28. Wie man ein Projekt freigibt, das von einem 3rd Party SNAPSHOT Projekt in Maven abhängt
- 29. iPad iOS Speicherverwaltung - wie man "Real Memory" freigibt, das von UIImageViews, UIScrollViews verwendet wird?
- 30. Problem mit Flask-Marshmallow, das DB-Inhalt über API freigibt
So Ihre native Funktion kehrt zurück zu Java? Wenn ja: Nein, es gibt nichts Besonderes, das Sie in Ihrem systemeigenen Code ausführen müssen (es sei denn, Sie haben mit 'NewGlobalRef' einen globalen Verweis auf das Array erstellt). – Michael