码迷,mamicode.com
首页 > 移动开发 > 详细

Android JNI 学习(五):JNI 接口整理 — References Api

时间:2018-11-15 22:31:59      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:span   开始   弱引用   自动   mem   系统   out   env   ensure   

1. NewGlobalRef(创建全局引用)

jobjectNewGlobalRef(JNIEnv *env, jobject obj);

创建 obj 参数所引用对象的新全局引用。obj 参数既可以是全局引用,也可以是局部引用。全局引用通过调用 DeleteGlobalRef() 来显式撤消。

参数:

env:JNI 接口指针。

obj:全局或局部引用。

返回值:

返回全局引用。如果系统内存不足则返回 NULL

2. DeleteGlobalRef(删除全局引用)

void DeleteGlobalRef(JNIEnv *env, jobject globalRef);

删除 globalRef 所指向的全局引用。

参数:

env:JNI 接口指针。

globalRef:全局引用。

3. NewLocalRef(创建局部引用)

jobject NewLocalRef(JNIEnv *env, jobject ref); 

创建 obj 参数所引用对象的新局部引用。ref 参数既可以是全局引用,也可以是局部引用。全局引用通过调用 DeleteLocalRef() 来显式撤消。

参数:

env:JNI 接口指针。

ref:全局或局部引用。

返回值:

返回局部引用。如果系统内存不足则返回 NULL

4. DeleteLocalRef(删除局部引用)

void DeleteLocalRef(JNIEnv *env, jobject localRef);

删除 localRef所指向的局部引用。

参数:

env:JNI 接口指针。

localRef:局部引用。

5. EnsureLocalCapacity(确保局部引用的容量)

jint EnsureLocalCapacity(JNIEnv *env, jint capacity); 

确保至少给定数量的局部引用能在当前线程被创建。如果创建成功就返回0,否则就会返回一个负数并且抛出OutOfMemoryError异常。

当naitve方法开始运行时,VM会自动保证至少16个局部引用能被创建。

为了兼容,VM会分配超过声明的局部引用数量的内存。

6. NewWeakGlobalRef(创建全局弱引用)

jweak NewWeakGlobalRef(JNIEnv *env, jobject obj); 

创建 obj 参数所引用对象的新全局弱引用。ref 参数既可以是全局引用,也可以是局部引用。全局引用通过调用 DeleteWeakGlobalRef() 来显式撤消。

参数:

env:JNI 接口指针。

obj:全局或局部弱引用。

返回值:

返回局部引用。如果系统内存不足则返回 NULL

7. DeleteWeakGlobalRef(删除全局弱引用)

void DeleteWeakGlobalRef(JNIEnv *env, jweak obj);

删除 obj 所指向的全局弱引用。

参数:

env:JNI 接口指针。

obj:全局弱引用。

 

Android JNI 学习(五):JNI 接口整理 — References Api

标签:span   开始   弱引用   自动   mem   系统   out   env   ensure   

原文地址:https://www.cnblogs.com/renhui/p/9962238.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!