Мой собственный метод имеет метод с байтом [] return value, поэтому я использую «NewByteArray» для распределения байта [], а затем используйте return для возврата jbyteArray. Должен ли я освободить jbyteArray? И как выпустить jbyteArray? Спасибо. Я начинающий Java, и мой английский плохой.Как освободить jbyteArray?
ответ
Вы не хотите выпускать байтовый массив в своем нативном методе, потому что вызывающий метод native использует массив в Java.
Учитывая, что вы не держите глобальную ссылку на созданный массив:
Коллектор мусора может затем позаботиться, чтобы удалить объект массива в нужное время, так как локальная ссылка, что нативные методы держится массив будет удален после возвращения метода.
Вот пример того, как такой нативный метод может выглядеть следующим образом: How to return an array from JNI to Java?
Вы имеете в виду, что GC может выпустить jbyteArray auto? Значит, мне не нужно ничего делать? Спасибо. – cpdyj
@cpdyj, как сказал Майкл: «если вы не создали глобальную ссылку на массив с помощью NewGlobalRef» – Calculator
Большое спасибо. – cpdyj
Так что ваша родная функция возвращается обратно в Java? Если это так: нет, вам нечего делать в своем собственном коде (если вы не создали глобальную ссылку на массив с использованием 'NewGlobalRef'). – Michael