专栏首页指尖下的AndroidJNI之路径初探---6

JNI之路径初探---6

本篇文章讲解JNI下属性的内存释放问题,众所周知,JAVA有四大引用,1,强引用2,弱引用3,软引用4,虚引用。JNI有三大引用,1,普通全局引用2,弱全局引用3,局部引用。 1,Native方法执行完最后一行代码完毕后,方法内的所有局部对象全部自动释放内存。 2,弱、普通全局引用是跨线程、方法的,不同的是全局引用必须手动调用(env)->DeleteGlobalRef(env, 引用);才能释放内存,而弱全局适用于包装那些使用不频繁的属性,它是不稳定的,因为它不会阻止垃圾回收机制释放其内存,只要内存不够,弱引用就可能被释放。 3,引用的比较用(env)->IsSameObject(env, obj_1, obj_2),特殊的一点如果比较的是NULL,NULL是JVM下的对象,如果你比对的对象是null,尽管"相同",但是会不同。

![清除局部变量内存.png](http://upload-images.jianshu.io/upload_images/3027456-22e01444560b3e9c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Java是值传递还是引用传递?

    代码很简单,图一中调用静态方法IntValues(int t),毫无疑问是传递值,因为如果是引用传递,那么二者打印的值是一致的。很明显,a--之后,t的值没有发...

    萬物並作吾以觀復
  • FragmentTabHost中切换Fragment保存状态

    萬物並作吾以觀復
  • Android AIDL 跨进程通信

    安卓 IPC 跨进程通信有很多种方式,我们可以用 Bundle传递数据,通过 Intent 意图去打电话,在 Uri 里面传递电话号码

    萬物並作吾以觀復
  • 跟面试官聊到JVM,他99%会让你谈谈这个问题!

    但凡问到 JVM(Java 虚拟机)通常有 99% 的概率一定会问: 在 JVM 中如何判断一个对象的生死状态?

    美的让人心动
  • 如何遍历pandas当中dataframe的行

    现在需要遍历上面DataFrame的行。对于每一行,都希望能够通过列名访问对应的元素(单元格中的值)。也就是说,需要类似如下的功能:

    马哥Python
  • 与假视频死磕到底!谷歌 AI 开源 Deepfake 检测数据集,3000+ 真人亲身上阵

    在不久前,Facebook 发起了 Deepfakes 检测挑战赛;而近日,谷歌 AI 就跟着强势推出了 Deepfake 视频检测数据集,势将一同与假视频死磕...

    AI科技评论
  • JNI--局部引用,全局引用,弱全局引用

    aruba
  • 面试被问:运行一个HelloWorld程序JVM都经历了什么

    注:如果无法通过符号引用验证,那么将会抛出一个java.lang.IncompatibleClassChangeError异常的子类:java.lang.Ill...

    田维常
  • 调查显示欧洲用户更喜欢指纹认证

    据VISA欧洲2016年7月报道,Populus公司代表Visa进行的近期研究显示,欧洲消费者对生物识别身份验证的热情不断高涨。 ...

    人工智能快报
  • 再刷一波起来!Java后端开发面经大集锦2.0,刷完顺利拿下Offer!

    昨天场主献上Java后端开发面经大集锦1.0,反响特别好!还有程序员“指控”场主:为啥不早点推送??并送上了一个意味深长的微笑

    养码场

扫码关注云+社区

领取腾讯云代金券