page contents

谈谈你对 JNIEnv 和 JavaVM 理解?

轩辕小不懂 发布于 2022-07-28 15:18
阅读 675
收藏 0
分类:开发环境
3974
Nen
Nen
- 程序员

JavaVM

JavaVM 是虚拟机在 JNI 层的代表。

一个进程只有一个 JavaVM。(重要!)

所有的线程共用一个 JavaVM。(重要!)

JNIEnv

JNIEnv 表示 Java 调用 native 语言的环境,封装了几乎全部 JNI 方法的指针。

JNIEnv 只在创建它的线程生效,不能跨线程传递,不同线程的 JNIEnv 彼此独立。(重要!)

注意:

在 native 环境下创建的线程,要想和 java 通信,即需要获取一个 JNIEnv 对象。我们通过 AttachCurrentThread 和 DetachCurrentThread 方法将 native 的线程与 JavaVM 关联和解除关联。

请先 登录 后评论