JNI之路径初探---6

简介: 本篇文章讲解JNI下属性的内存释放问题,众所周知,JAVA有四大引用,1,强引用2,弱引用3,软引用4,虚引用。JNI有三大引用,1,普通全局引用2,弱全局引用3,局部引用。

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

相关文章
|
Java Maven
启动jar文件,报”no main manifest attribute“异常
在云服务器上部署打包好的的MQTT消息服的jar包,使用命令`nohup java -jar xxx.jar &` 启动,出现的问题
4274 0
启动jar文件,报”no main manifest attribute“异常
|
C++ Windows
C++ --- Dll文件的生成与调用(二)之动态库注入技术
C++ --- Dll文件的生成与调用(二)之动态库注入技术
177 0
|
C++ Windows
C++ --- Dll文件的生成与调用(一)
C++ --- Dll文件的生成与调用(一)
423 0
|
Java Android开发
AndroidStudio 修改aidl路径(添加AIDL文件夹)
AndroidStudio 修改aidl路径(添加AIDL文件夹)
441 0
AndroidStudio 修改aidl路径(添加AIDL文件夹)
|
Java Linux
JNI:需要显式指定使用jar的全路径
JNI:需要显式指定使用jar的全路径
88 0
|
Java Android开发 Linux
在 Android 系统中直接调用 SO文件(包含System.loadLibrary加载so的路径解释)
Android虚拟机不能直接调用底层设备,如果要对底层设备进行调用,就需要用到so使用 C语言或C++编写完成,利用NDK进行编译,直接运行在Linux内核中,按jni调用 so时,基本类型可以直接交互。
8458 0
|
Java
classPath 【项目编译之后的输出路径】字节码的路径,默认是生成在bin目录下
classPath 【项目编译之后的输出路径】字节码的路径,默认是生成在bin目录下
187 0
classPath 【项目编译之后的输出路径】字节码的路径,默认是生成在bin目录下
|
Go
Go基础:路径、文件名和包名的关系
Go基础:路径、文件名和包名的关系
779 0
Go基础:路径、文件名和包名的关系
打包运行报no main manifest attribute, in XXXX的解决办法
打包运行报no main manifest attribute, in XXXX的解决办法