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)

相关文章
|
10月前
|
C++ Windows
C++ --- Dll文件的生成与调用(二)之动态库注入技术
C++ --- Dll文件的生成与调用(二)之动态库注入技术
113 0
|
10月前
|
C++ Windows
C++ --- Dll文件的生成与调用(一)
C++ --- Dll文件的生成与调用(一)
268 0
|
11月前
|
C++
Clion配置单个project下可以运行多个CPP文件的main函数
Clion配置单个project下可以运行多个CPP文件的main函数
795 0
|
Java Linux
JNI:需要显式指定使用jar的全路径
JNI:需要显式指定使用jar的全路径
62 0
|
Java 开发工具 Android开发
Android Studio运行报错:无法访问XXX......请删除该文件或确保该文件位于正确的类路径子目录中
今天运行一个项目发现运行不起来了,报错 错误: 无法访问XXX 错误的类文件: C:\Users\xxx\.gradle\caches\transforms-2\files-2.1\xxx\xxx(xxx/xxx/xxx.class) 错误的 RuntimeInvisibleParameterAnnotations 属性: xxxx 请删除该文件或确保该文件位于正确的类路径子目录中。
1082 0
|
Java
classPath 【项目编译之后的输出路径】字节码的路径,默认是生成在bin目录下
classPath 【项目编译之后的输出路径】字节码的路径,默认是生成在bin目录下
153 0
classPath 【项目编译之后的输出路径】字节码的路径,默认是生成在bin目录下
打包运行报no main manifest attribute, in XXXX的解决办法
打包运行报no main manifest attribute, in XXXX的解决办法
|
Java Android开发 Linux
在 Android 系统中直接调用 SO文件(包含System.loadLibrary加载so的路径解释)
Android虚拟机不能直接调用底层设备,如果要对底层设备进行调用,就需要用到so使用 C语言或C++编写完成,利用NDK进行编译,直接运行在Linux内核中,按jni调用 so时,基本类型可以直接交互。
7936 0
|
Android开发
【Android 逆向】ART 脱壳 ( DexClassLoader 脱壳 | exec_utils.cc 中执行 Dex 编译为 Oat 文件的 Exec 和 ExecAndReturnC函数 )
【Android 逆向】ART 脱壳 ( DexClassLoader 脱壳 | exec_utils.cc 中执行 Dex 编译为 Oat 文件的 Exec 和 ExecAndReturnC函数 )
133 0

热门文章

最新文章