【Android NDK 开发】JNI 引用 ( 全局引用 | NewGlobalRef | DeleteGlobalRef )
文章目录
- I . 全局引用
- II . 创建全局引用 ( NewGlobalRef )
- III . 全局引用代码示例
I . 全局引用
1 . 全局引用作用域 :
与局部引用对比 : 全局引用与局部引用相对应 , 其作用域是全局的 , 局部引用只能在当前方法使用 ;
空间 : 可以 跨方法 , 跨线程使用 ;
时间 : 创建后可以使用 , 手动释放后全局引用失效 ; ( 手动释放前全局可用 )
2 . 全局引用 内存回收 : 全局引用 与 局部引用 均不会被 JVM 自动回收 , 如果内存不足 , JVM 宁可抛出 OOM 异常 , 也不会回收这些内存 ;
3 . 全局引用相关方法 :
① 创建全局引用 : NewGlobalRef ;
② 释放全局引用 : DeleteGlobalRef ;
II . 创建全局引用 ( NewGlobalRef )
1 . 函数原型 : 传入一个局部引用参数 , 将局部引用转为全局引用 ;
返回值 : 由局部引用转换成的全局引用 ;
参数 :
- jobject obj : 使用 NewXXX / FindXXX 等 大多数 JNI 方法 默认创建的 Java 引用类型对象 都是局部引用 ;
struct _JNIEnv {/* _JNIEnv 结构体中封装了 JNINativeInterface 结构体指针 */const struct JNINativeInterface* functions;...// 最终 调用的 还是 JNINativeInterface 结构体中封装的 NewGlobalRef 方法jobject NewGlobalRef(jobject obj){ return functions->NewGlobalRef(this, obj); }...
}
III . 全局引用代码示例
全局引用代码示例:
// 全局引用
// 访问时如果局部变量也有同名变量 , 可以使用 域作用符 访问
// ::class_teacher 表示访问全局的变量
jclass class_teacher_global;extern "C"
JNIEXPORT void JNICALL
Java_kim_hsl_jni_MainActivity_jniGlobalReferenceTest(JNIEnv *env, jobject instance) {/*全局引用 作用域 :空间 : 可以 跨方法 , 跨线程使用时间 : 创建后可以使用 , 手动释放后全局引用失效全局引用创建 : NewGlobalRef全局引用释放 : DeleteGlobalRef全局引用会阻止 JVM 回收该引用这里注意域作用符的使用 , 本方法中没有 class_teacher_global 同名变量 , :: 可用 可 不用*/// 1 . 获取 Teacher 类 ( 该变量需要释放 )if(::class_teacher_global == NULL) {//生成局部引用 , 该局部引用使用完毕后可释放jclass tmp_class = env->FindClass("kim/hsl/jni/Teacher");//将上述生成的局部引用变成 全局引用// 全局引用释放时 , env->DeleteGlobalRef(class_teacher_global) 即可释放下面转换的 全局引用::class_teacher_global = static_cast<jclass>(env->NewGlobalRef(tmp_class));//将局部引用释放掉env->DeleteLocalRef(tmp_class);}
}
【Android NDK 开发】JNI 引用 ( 全局引用 | NewGlobalRef | DeleteGlobalRef )相关推荐
- 【Android NDK 开发】JNI 方法解析 ( JNIEnv *env 参数 )
文章目录 一. JNI 方法解析 二. JNIEnv *env 参数解析 三. C 语言 环境中 JNIEnv *env 参数解析 四. C ++ 环境中 JNIEnv *env 参数解析 总结 : ...
- Android 高级开发 JNI NDK 介绍与使用
Android 高级开发 JNI & NDK 介绍与使用 前言 对于没接触过的领域,即是挑战也是机遇,不仅能够提升自己的能力.还能够学习到新的技术知识 而学习新的技术的时候,最好是从头开始按照 ...
- Android NDK开发之旅(3): 详解JNI数据类型与C/C++、Java之间的互调
Android NDK开发之旅(3):详解JNI数据类型与C/C++.Java之间的互调 (码字不易,转载请声明出处:http://blog.csdn.net/andrexpert/article/d ...
- Android NDK开发之旅(2):一篇文章搞定Android Studio中使用CMake进行NDK/JNI开发
Android NDK开发之旅(2):一篇文章搞定android Studio中使用CMake进行NDK/JNI开发 (码字不易,转载请声明出处:http://blog.csdn.NET/andrex ...
- 安卓逆向_15( 三 ) --- Android NDK 开发【 jni 静态注册、JNI_OnLoad 动态注册】
Android Studio开发JNI示例:https://blog.csdn.net/wzhseu/article/details/79683045 JNI_动态注册_静态注册.zip : http ...
- 【Android NDK 开发】Android Studio 使用 CMake 导入动态库 ( 构建脚本路径配置 | 指定动态库查找路径 | 链接动态库 )
文章目录 I . CMake 引入动态库与静态库区别 II . Android Studio 中 CMake 引入动态库流程 III . 指定动态库查找路径 IV . 链接函数库 V . 完整代码示例 ...
- Android NDK开发(三)——常见错误集锦以及LOG使用,androidndk
Android NDK开发(三)--常见错误集锦以及LOG使用,androidndk 转载请注明出处:http://blog.csdn.net/allen315410/article/details/ ...
- 【Android NDK 开发】Android.mk 配置静态库 ( Android Studio 配置静态库 | 配置动态库与静态库区别 | 动态库与静态库打包对比 )
文章目录 I . Android Studio 中使用 Android.mk 配置静态库 总结 II . 第三方动态库来源 III . 配置 Android.mk 构建脚本路径 IV . 预编译 第三 ...
- 【Android NDK 开发】Android.mk 配置动态库 ( Android Studio 配置动态库 | 动态库加载版本限制 | 本章仅做参考推荐使用 CMake 配置动态库 )
文章目录 I . Android Studio 中使用 Android.mk 配置动态库 总结 II . 第三方动态库来源 III . 配置 Android.mk 构建脚本路径 IV . 预编译 第三 ...
最新文章
- 前端开发面试题总结之——JAVASCRIPT(一)
- JMM同步原语之final域的内存语义
- echart 多柱图只显示部分数据标签_python|读取Excel生成pyecharts动态分析图
- 学习 SpringCloud 五大组件后的总结 一
- 如何白嫖CSDN会员?
- 【Oracle】Oracle错误编码大全
- 有什么做电音的软件?3款好用App让你爱上唱歌
- 运营商5G商业模式研究
- 计算机中h是几进制,16进制后面用H表示,其他进制的用什么表示
- android、ios、windows等平台回声消除的解决方案
- 计算机配置音箱便宜,电脑音箱买什么价位的好 六款适合不同群体的音箱推荐...
- 重磅!中国首家互联网银行联手腾讯、华为各大APP,最高5万额度,疯狂提额100亿!!!...
- 计算机教学拼音打字教案,三年级下册信息技术课用拼音写汉字教案
- 深圳关内主要旅游景点地址和公交路线
- Web安全 -- 信息收集(上)
- 赋值运算符重载和拷贝构造函数
- Java多线程模拟实现LOL中薇恩、死歌、剑圣的操作
- PyTorch深度学习实践(b站刘二大人)P6讲 逻辑斯蒂回归 Logistic Regression
- 【Dest0g3 520迎新赛】密码学部分Wp及LCG(线性同余生成器)攻击方法
- Centos 配置阿里yum源
热门文章
- 黑马vue---14、v-model双向绑定
- Python进阶-----property用法(实现了get,set,delete三种方法)
- Jzoj4458 密钥破解——Pollard-rho
- eclipse的安装和用VS进行单元测试
- Android之Providing Resources(提供资源)
- C# 集合类(四):Hashtable
- 如何在SharePoint2007中实现下拉列表(DropDownList)的级联菜单效果
- Castle ActiveRecord学习实践(1):快速入门指南
- Devexpress的Datalayout控件
- 用流读取文件中的内容