Java JNI方法id缓存

dem*_*emi 2 java java-native-interface

我想在调用之间缓存方法 ID。为此,我获取方法 ID:

// Put static to clarify it's saved across calls.
static jmethodID method = env->GetMethodID(class_HelloWorld, name, signature);
Run Code Online (Sandbox Code Playgroud)

我的问题是:我是否需要创建class_HelloWorld一个全局引用,NewGlobalRef或者可以从本地引用获取方法 ID 并保存(我使用class_HelloWorldFindClass,而不需要全局引用类元数据?

use*_*421 5

如果您从中获取 methodID 的类没有更改,您可以重新使用 methodID。它不像 ajclassjobject那样需要缓存为 a GlobalRef:它实际上只是一个整数。