我有一个调用实例方法的jni函数。此函数将字节数组传递给java端,如下面的伪代码。我是否需要在DeleteLocalRef
方面ReleaseByteArrayElements
和C
,我应该在Java
方面做些什么?
// C side
func() {
while(something) {
jbyteArray array = NewByteArray();
// pass c side array as parameter to the java side
callInstanceMethod(array);
// delete and relase here?
}
}
// Java side
method(byte[] array) {
// delete array??
}
答案 0 :(得分:1)
我是否需要C侧的DeleteLocalRef和ReleaseByteArrayElements
是的,否则你可能会超过JNI代码中的本地参考表,我相信这只是20大。
我应该在Java方面做些什么?
在Java方面你无能为力。在Java回调执行时,调用方法仍保留引用。