JNI引用Java对象
2013-08-29 14:33
253 查看
引用 Java
对象
基本类型(如整型、字符型等)在Java
和平台相关代码之间直接进行复制。而
Java
对象由引用来传递。虚拟机必须跟踪传到平台相关代码中的对象,以使这些对象不会被垃圾收集器释放。反之,平台相关代码必须能用某种方式通知虚拟机它不再需要那些对象,同时,垃圾收集器必须能够移走被平台相关代码引用过的对象。
全局和局部引用
JNI 将平台相关代码使用的对象引用分成两类:局部引用和全局引用。局部引用在本地方法调用期间有效,并在本地方法返回后被自动释放掉。全局引用将一直有效,直到被显式释放。对象是被作为局部引用传递给本地方法的,由
JNI 函数返回的所有 Java
对象也都是局部引用。JNI 允许程序员从局部引用创建全局引用。要求
Java
对象的 JNI
函数既可接受全局引用也可接受局部引用。本地方法将局部引用或全局引用作为结果返回。
大多数情况下,程序员应该依靠虚拟机在本地方法返回后释放所有局部引用。但是,有时程序员必须显式释放某个局部引用。例如,考虑以下的情形:
相关文章推荐
- 解析Java的JNI编程中的对象引用与内存泄漏问题
- 解析Java的JNI编程中的对象引用与内存泄漏问题
- 学习android JNI的那些事儿--------6. 在java中传入引用数据类型(对象)作为参数
- Android NDK开发(二)——JNI访问和引用JAVA对象
- jobject AllocObject(JNIEnv *env, jclass clazz); 分配新 Java 对象而不调用该对象的任何构造函数。返回该对象的引用
- IntelliJ IDEA平台下JNI编程(五)—本地C代码创建Java对象及引用
- Java:对象的强、软、弱和虚引用[转]
- java 多态 父类引用指向子类对象
- java中父类对象引用指向子类对象
- Java对象的强、软、弱和虚引用
- 当JNI遇到多线程--java对象如何被C++中的多个线程访问?
- java基础——对象引用
- 对象A和B循环引用,最后会不会不被GC回收?-------关于Java的GC机制
- java 中对象引用转换总结
- JAVA对象引用和值引用
- JAVA中的指针,引用及对象的clone
- java--对象引用与对象的区别
- Java对象的强、软、弱和虚引用
- Java对象的强、软、弱和虚引用原理+结合ReferenceQueue对象构造Java对象的高速缓存器
- #java百问#1构造:构造器没有返回值,但new表达式返回新建对象的引用?