在JNI中对同一对象的多个引用会发生什么?

问题描述 投票:0回答:1

我正在使用JNI从C ++访问一些Java代码。必须清除JNI返回的对象引用,但是如果多个方法返回相同的Java对象会发生什么?我是否需要在每个人上调用删除?

例如。 java.nio.Buffer有一个方法clear()清除缓冲区并返回自己。

如果我首先使用JNI创建缓冲区,然后调用clear(),我是否需要清理jobjects,或者我只清理其中一个?

java-native-interface
1个回答
0
投票

在JNI中,您有Java对象和Java对象引用。 jobject是指向Java对象的对象引用,如果您不再需要它,可以使用DeleteLocalRef进行释放。

clear()对象上调用Buffer将为返回的对象创建一个新的引用,即使它实际指向同一个对象。所以,是的,如果你用完本地参考,你应该释放你的Buffer的所有引用,但你正在使用的那个。

© www.soinside.com 2019 - 2024. All rights reserved.