获得徽章 11
- JavaVM: 表示Java虚拟机在Native层的代表,JNI中所有的操作都是从JavaVM的接口开始。一个进程只可以有一个JavaVM,但该JavaVM对象可以在进程的不同线程间共享。JNI中获取JavaVM的几种方式:
// 1. 当通过虚拟机加载so库时,会执行到JNI_OnLoad方法中,这时候就可以获取到JavaVM对象,并保存下来。
jint JNI_OnLoad(JavaVM *vm, void *reserved) {}
// 2. 通过JNIEnv获取JavaVM对象
JavaVM * javaVm;
jniEnv->GetJavaVM(&javaVm);
// 3. 还可以采用下面这种方式,虚拟机内部获取JavaVM就采用的这种方式
JNI_CreateJavaVM(&javaVm,&jniEnv, nullptr);展开评论点赞