且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

JNI之路径初探---6

更新时间:2022-06-27 14:14:10

本篇文章讲解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)