混合编程jni 第九篇之Jni总结

Posted 香菜聊游戏

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了混合编程jni 第九篇之Jni总结相关的知识,希望对你有一定的参考价值。

 系列目录:【混合编程Jni】 系列目录_香菜聊游戏的博客-CSDN博客

动态库的加载

可以使用标准 System.loadLibrary 从共享库加载原生代码。

关于参数传递

int、char 等这样的基本数据类型,在本地代码和JVM之间进行复制传递,

而对象是引用传递的。每一个引用都包含一个指向JVM中相应的对象的指针,

但本地代码不能直接使用这个指针,必须通过引用来间接使用。

局部引用和全局引用

传递给原生方法的每个参数,以及 JNI 函数返回的几乎每个对象都属于“局部引用”。

这意味着,局部引用在当前线程中的当前原生方法运行期间有效。

在原生方法返回后,即使对象本身继续存在,该引用也无效。

这适用于 jobject 的所有子类,包括 jclass、jstring 和 jarray。(启用扩展的 JNI 检查时,运行时会针对大部分引用误用问题向您发出警告。)

获取非局部引用的唯一方法是通过 NewGlobalRef 和 NewWeakGlobalRef 函数。

如果您希望长时间保留某个引用&#x

以上是关于混合编程jni 第九篇之Jni总结的主要内容,如果未能解决你的问题,请参考以下文章

混合编程jni 第七篇之JNI 的命令行们

混合编程jni 第七篇之JNI 的命令行们

混合编程jni 第五篇之C++ 访问 Java代码

混合编程jni 第八篇之Jni对虚拟机的操作

混合编程jni 第十篇之JNA初见

混合编程jni 第八篇之Jni对虚拟机的操作