JVM (Java Virtual Machine)
Java 程序的运行环境,它是 Java 平台的核心 。
JNIEnv
Java Native Interface (JNI) 的核心,它是一个指向本地方法实现中可用 JNI 函数表的指针,仅在当前线程中有效 。
多线程
另一个线程需要访问jvm它必须首先调用AttachCurrentThread() 将自己附加到 JVM并获取JNI接口指针。 调用DetachCurrentThread() 来分离它自己之前一直连接到VM。
引用
**局部引用
**
指向的JVM内部空间会在本地方法返回的之后被销毁,因此不能跨方法和线程。
全局引用
可以跨方法和线程访问,必须手动释放。通过NewGlobalRef创建,DeleteGlobalRef释放。
弱全局引用
和全局引用类似,可以在跨方法和线程使用,它使用NewGlobalWeakRef创建,使用DeleteGlobalWeakRef释放。但是弱全局引用是会被gc回收,所以在使用的时候我们需要先判断它是否已经被回收,if(!env->IsSameObject(g_listener, NULL)) {} 。
数据类型(基本类型)
数据类型(引用类型)
类型描述符(基本数据类型)
类型描述符(数组类型)
类型描述符(复杂类型)
函数签名
函数注册