JavaVM
JavaVM 是虚拟机在 JNI 层的代表。
一个进程只有一个 JavaVM。(重要!)
所有的线程共用一个 JavaVM。(重要!)
JNIEnv
JNIEnv 表示 Java 调用 native 语言的环境,封装了几乎全部 JNI 方法的指针。
JNIEnv 只在创建它的线程生效,不能跨线程传递,不同线程的 JNIEnv 彼此独立。(重要!)
注意:
在 native 环境下创建的线程,要想和 java 通信,即需要获取一个 JNIEnv 对象。我们通过 AttachCurrentThread 和 DetachCurrentThread 方法将 native 的线程与 JavaVM 关联和解除关联。
JavaVM
JavaVM 是虚拟机在 JNI 层的代表。
一个进程只有一个 JavaVM。(重要!)
所有的线程共用一个 JavaVM。(重要!)
JNIEnv
JNIEnv 表示 Java 调用 native 语言的环境,封装了几乎全部 JNI 方法的指针。
JNIEnv 只在创建它的线程生效,不能跨线程传递,不同线程的 JNIEnv 彼此独立。(重要!)
注意:
在 native 环境下创建的线程,要想和 java 通信,即需要获取一个 JNIEnv 对象。我们通过 AttachCurrentThread 和 DetachCurrentThread 方法将 native 的线程与 JavaVM 关联和解除关联。