Использование DeleteLocalRef после SetObjectArrayElement при построении массива в JNI - PullRequest
8 голосов
/ 06 декабря 2010

В JNI я создаю большой массив, вызывая SetObjectArrayElement() для вставки Java-объекта, созданного локально в коде JNI.

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

1 Ответ

11 голосов
/ 08 декабря 2010

Да.

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...