我正在使用JNI从C ++访问一些Java代码。必须清除JNI返回的对象引用,但是如果多个方法返回相同的Java对象会怎样?我需要给每个电话打电话吗?
例如java.nio.Buffer
使用方法clear()
清除缓冲区并返回自身。
如果我首先使用JNI创建一个缓冲区,然后调用clear()
,是否需要清理两个jobjects
,还是只清理其中一个是好的?
答案 0 :(得分:0)
在JNI中,您具有Java对象和Java对象引用。 jobject
是指向Java对象的对象引用,如果不再需要它,可以使用DeleteLocalRef
进行释放。
在clear()
对象上调用Buffer
将为返回的对象创建一个新引用,即使它实际上指向同一对象。因此,是的,如果您用尽了本地引用,则应释放对Buffer
的所有引用,但您正在使用的引用。