【问题标题】:Java JNI method id cachingJava JNI 方法 ID 缓存
【发布时间】:2013-10-11 11:52:50
【问题描述】:

我想跨调用缓存方法 ID。为此,我得到方法 ID:

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

我的问题是:我是否需要使用NewGlobalRefclass_HelloWorld 设为全局引用,或者方法ID 可以从本地引用中获取并保存(我使用FindClass 获得class_HelloWorld)而不需要全局引用-类元数据?

【问题讨论】:

    标签: java java-native-interface


    【解决方案1】:

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

    【讨论】:

    • 答案似乎直截了当,但课程怎么可能改变呢? Java 不是动态语言,据我所知,不可能修改类定义以添加或删除方法。据我了解问题术语,有manyanswers 也缓存对类的引用,而实际问题只是如何缓存方法/字段ID 以便以后重用。所以问题真的是:即使没有类缓存,方法/字段 id 在程序的所有持续时间内都有效吗?
    猜你喜欢
    • 1970-01-01
    • 2012-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多