混合编程jni第四篇之引用和异常

香菜聊游戏 香菜聊游戏     2022-12-06     507

关键词:

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

继续写JNI的知识点

上篇基本上介绍了数据的转换以及方法签名的相关知识点,不懂的可以看看之前的文章

建议循序渐进,不可冒进

今天继续介绍JNI的知识点

 除 八种 基本数据类型之外的都是引用数据类型 ;

关于引用

Java虚拟机的内存结构我们都知道,堆内存和堆外内存

大家都知道,Java代码创建的对象大多在堆内存内

Native 代码创建的对象,占用的内存在native 内存,

在混合编程的时候,对象有可能创建在Java侧,也有可能创建的native侧

但是在混合编程的时候需要做数据的传递,如果只是简单的拷贝就没什么问题

但是我们知道大对象拷贝起来性能很差,所以不能直接拷贝,还是谁创建,谁管理

但是JVM 是有gc 存在的,这个是自动回收,但是有可能在Native代码运行的时候导致对象被回收,而产生错误

因此存在几种引用对象

① 局部引用 Local Reference: 其只在作用域内有效 , 内存不可回收 ;

② 全局引用 Global References: 全局有效 , 内存不可回收 ;

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

 系列目录:【混合编程Jni】系列目录_香菜聊游戏的博客-CSDN博客动态库的加载可以使用标准System.loadLibrary从共享库加载原生代码。关于参数传递int、char等这样的基本数据类型,在本地代码和JVM之间进行复制传递,而对象是... 查看详情

混合编程jni第六篇之native中字符串和数组的操作(代码片段)

 系列目录:【混合编程Jni】系列目录_香菜聊游戏的博客-CSDN博客继续JNI的知识点,今天看下字符串和数组的一些操作这两个是比较特殊的存在字符串操作编码格式Java默认使用Unicode编码,C/C++默认使用UTF编码在本地代码中操... 查看详情

混合编程jni第五篇之c++访问java代码(代码片段)

 系列目录:【混合编程Jni】系列目录_香菜聊游戏的博客-CSDN博客今天继续JNI的学习,因为是混合编程,所以在写的过程中需要进行交互Java可以调用C++,C++也可以调用Java,虽然作为Java程序很少写C++,但是既然是做JNI开发,就... 查看详情

混合编程jni第五篇之c++访问java代码

 今天继续JNI的学习,因为是混合编程,所以在写的过程中需要进行交互Java可以调用C++,C++也可以调用Java,虽然作为Java程序很少写C++,但是既然是做JNI开发,就不得不了解下如果在C++中访问Java的属性和方法,开始吧访问属... 查看详情

混合编程jni第七篇之jni的命令行们(代码片段)

 系列目录:【混合编程Jni】系列目录_香菜聊游戏的博客-CSDN博客        今天将继续JNI的学习,jni编程中常使用的一些命令行工具如何使用事半功倍,今天就快速的过一下,希望在接下来的使用中... 查看详情

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

jna是什么JNA=JavaNativeAccess是基于JNI开发的一个框架。是为了降低JNI开发的复杂性的一个Java框架。可以不用写c/c++代码调用动态库。JNA开源项目的信息SUN公司主导开发的开源项目github地址:https://github.com/java-native-access/jna文档地址:h... 查看详情

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

 系列目录:【混合编程Jni】系列目录_香菜聊游戏的博客-CSDN博客jna是什么JNA=JavaNativeAccess是基于JNI开发的一个框架。是为了降低JNI开发的复杂性的一个Java框架。可以不用写c/c++代码调用动态库。JNA开源项目的信息SUN公司主导... 查看详情

好玩的es--第四篇之聚合查询和集群(代码片段)

好玩的ES--第四篇之聚合查询和集群聚合查询简介测试数据使用根据某个字段分组求最大值求最小值求平均值求和整合应用集群集群Cluster相关概念集群<cluster>节点<node>索引<Index>映射<Mapping>文档<Document>分片&l... 查看详情

混合编程jni第八篇之jni对虚拟机的操作(代码片段)

写了好多了,今天继续写一下对虚拟机的一些操作。创建虚拟机jintJNI_CreateJavaVM(JavaVM**p_vm,void**p_env,void*vm_args);加载并初始化一个JavaVM,并返回一个指向JNI接口指针的指针。调用的线程JNI_CreateJavaVM()被认为是 主线程。不支持在... 查看详情

混合编程jni第八篇之jni对虚拟机的操作(代码片段)

 系列目录:【混合编程Jni】系列目录_香菜聊游戏的博客-CSDN博客写了好多了,今天继续写一下对虚拟机的一些操作。创建虚拟机jintJNI_CreateJavaVM(JavaVM**p_vm,void**p_env,void*vm_args);加载并初始化一个JavaVM,并返回一个指向JNI接口指... 查看详情

混合编程jni第七篇之jni的命令行们(代码片段)

        今天将继续JNI的学习,jni编程中常使用的一些命令行工具如何使用事半功倍,今天就快速的过一下,希望在接下来的使用中可以发挥效果    javahjavah是Java提供的生成jni头文件的... 查看详情

dwr第四篇之对象传参

1.本示例在第一篇架构基础上添加代码2. 首先,在dwr.xml文件里添加对象转换器3. 编写Person实体类1packagecom.skyer.vo;23importjava.util.Arrays;45publicclassPerson{6privateStringname;7privateintage;8privateString[]hobby;910publicStr 查看详情

好玩的es--第四篇之聚合查询和集群(代码片段)

好玩的ES--第四篇之聚合查询和集群聚合查询简介测试数据使用根据某个字段分组求最大值求最小值求平均值求和整合应用集群集群Cluster相关概念集群<cluster>节点<node>索引<Index>映射<Mapping>文档<Document>分片&l... 查看详情

好玩的es--第四篇之聚合查询和集群(代码片段)

好玩的ES--第四篇之聚合查询和集群聚合查询简介测试数据使用根据某个字段分组求最大值求最小值求平均值求和整合应用集群集群Cluster相关概念集群<cluster>节点<node>索引<Index>映射<Mapping>文档<Document>分片&l... 查看详情

linux从青铜到王者第二十四篇:linux网络基础第四篇之websocket协议(代码片段)

系列文章目录文章目录系列文章目录前言一、WebSocket简介二、WebSocket产生背景三、WebSocket实现原理四、WebSocket协议举例五、WebSocket使用1.WebSocket介绍2.WebSocketAPI3.WebSocket事件1.open2.Message3.Error4.Close4.WebSocket方法1.send()2.close()5.WebSocket... 查看详情

高级程序员必须精通的redis,第四篇之——set(集合)(代码片段)

1、简介Redis中所有的的数据结构都是通过一个唯一的字符串key来获取相应的value数据。Redis有5种基础数据结构,分别是:string(字符串)list(列表)hash(字典)set(集合)zset(有序集合... 查看详情

jni官方中文资料

...部引用访问Java对象访问基本类型数组访问域和方法报告编程错误Java异常异常和错误代码异步异常异常的处理JNI的类型和数据结构基本类型引用类型域ID和方法ID值类型类型签名UTF-8字符串JNI函数接口函数表版本信息调用实例方法C... 查看详情

redis系列第四篇之bitmap

参考技术ABitmap实际上并不是一种数据类型,而是定义在String类型上的面向位的操作。因为String是二进制安全的并且最大长度为512MB,所以String可以建立2^32个不同的位。位操作被分为两种:Bitmap最大的一个优点是当存储信息时可... 查看详情