java - 是否可以将 JavaVM * 和 JNIEnv * 保存为全局变量并在其他地方使用?

标签 java java-native-interface java-6 jrockit

JavaVM *javaVM = NULL; JNIEnv *jniEnv = NULL;

( createJavaVM )( &javaVM, ( void * )&jniEnv, &javaVMInitArgs )

其中 javaVM * 和 jniEnv * 是全局变量

最佳答案

Is it ok to save JavaVM * as a global variable and use it elsewhere?

是的。

Is it ok to save JNIEnv * as a global variable and use it elsewhere?

没有。它代表特定 JNI 方法调用的上下文。它依赖于当前线程、当前方法的参数、当前方法创建的本地引用等等,一旦 JNI 方法返回,它就变得无效。

关于java - 是否可以将 JavaVM * 和 JNIEnv * 保存为全局变量并在其他地方使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10082769/

相关文章:

java - 是否可以在启动时设置 JVM 工作目录?

java - 通过java调用Firefox方法

java - 在 Mountain Lion 上安装不同的 Java JDK 版本

java - Lambda 表达式 Java 1.8 代码到 Java 1.6

java - Java中如何将原图resize为普通图片大小?

java - 如何避免在用于日志记录的字符串中调用模拟对象的方法?

java - JAXB 将命名空间添加到父元素而不是包含的子元素

java - 使用 jOOQ 3.9 更新覆盖错误

java - 从 native 代码调用 java 方法时如何解决传递给 JNI 的 Bad global 或 local ref 错误

java - 编译器不喜欢重写