Про C++ что ли?
Использование JNI требует аккуратности, как и всё остальное в мире C/C++.
Должен удалить локальную ссылку, сделав доступным объект для garbage collection. Проблема не в нём, а в методе JavaObject::callSetter:
template<>
void JavaObject::callSetter(const char* method_name, uint8_t* value, size_t size) {
jbyteArray array = env_->NewByteArray(size);
env_->SetByteArrayRegion(array, 0, size, (jbyte*) value);
jmethodID method = env_->GetMethodID(
clazz_,
method_name,
"([B)V");
env_->CallVoidMethod(object_, method, array);
}[/code]
При вызове NewByteArray создаётся локальная ссылка (array), но потом нигде не удаляется. При вызове из Java это не страшно, т.к. таблица локальных ссылок при возврате в Java очищается, а вот во всяких callback-механизмах это порождает утечки памяти.