Android JNI 學習(五):JNI 接口整理 — References Api
阿新 • • 發佈:2018-11-15
-a delet 內存 引用 5.4 cap 兼容 error span 所指向的全局引用。
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