Использование DeleteLocalRef после SetObjectArrayElement при построении массива в JNI

в JNI я строю большой массив, вызывая SetObjectArrayElement() чтобы вставить объект java, созданный локально в JNI код.

мой вопрос, после ввода объекта в массив с помощью SetObjectArrayElement(), хранит ли массив ссылку, чтобы я мог использовать DeleteLocalRef для освобождения локальной ссылки на вставленный объект?

1 ответов


да.

jobjectArray указывает на массив ссылок.

когда вы устанавливаете член этого массива в локальную ссылку, вы сделали вторую ссылку на объект. При удалении локальной ссылки ССЫЛКА в массиве остается. Сборщик мусора не будет утилизировать фактический объект до тех пор, пока не останется доступных ссылок.