您的位置:首页 > 编程语言 > Java开发

JNI引用Java对象

2013-08-29 14:33 253 查看


引用 Java
对象

基本类型(如整型、字符型等)在
Java
和平台相关代码之间直接进行复制。而
Java
对象由引用来传递。虚拟机必须跟踪传到平台相关代码中的对象,以使这些对象不会被垃圾收集器释放。反之,平台相关代码必须能用某种方式通知虚拟机它不再需要那些对象,同时,垃圾收集器必须能够移走被平台相关代码引用过的对象。

 


全局和局部引用

JNI 将平台相关代码使用的对象引用分成两类:局部引用和全局引用。局部引用在本地方法调用期间有效,并在本地方法返回后被自动释放掉。全局引用将一直有效,直到被显式释放。

对象是被作为局部引用传递给本地方法的,由
JNI 函数返回的所有 Java
对象也都是局部引用。JNI 允许程序员从局部引用创建全局引用。要求
Java
对象的 JNI
函数既可接受全局引用也可接受局部引用。本地方法将局部引用或全局引用作为结果返回。

大多数情况下,程序员应该依靠虚拟机在本地方法返回后释放所有局部引用。但是,有时程序员必须显式释放某个局部引用。例如,考虑以下的情形:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: