Android Ndk(Beginner ‘s guide)(3.3)
来源:互联网 发布:文本挖掘算法 编辑:程序博客网 时间:2024/05/19 18:15
本地和全局JNI引用
当从JNI获取一个对象引用的时候,这个引用是本地引用。当原生方法返回的时候,他允许在java代码中对应的垃圾回收器来自动的释放。因此,默认的,在本地调用职位的对象引用是不能正常存在的。例如:
static jobject gMyReference;JNIEXPORT void JNICALL Java_MyClass_myMethod(JNIEnv* pEnv,jobject pThis, jobject pRef) {gMyReference = pRef;}
上面的这段代码应该被完全的禁止,在JNI函数外面使用这样一个引用最终会导致灾难(内存崩溃或者泄露).
本地引用可以在他不用的时候被删除
pEnv->DeleteLocalRef(lReference);
JVM同时能保存至少16个引用,并且可以拒绝创建更多。设置值可以明确的标识他 如下:
pEnv->EnsureLocalCapacity(30);
为了是对象引用保持一个较长的时间,需要创建一个全局的引用
JNIEXPORT void JNICALL Java_MyClass_myStartMethod (JNIEnv* pEnv,jobject pThis, jobject pRef) {...gMyReference = pEnv->NewGlobalRef(pEnv, pRef<);...}然后在垃圾回收里面删除他
JNIEXPORT void JNICALL Java_MyClass_myEndMethod (JNIEnv* pEnv,jobject pThis, jobject pRef) {...gMyReference = pEnv->DeleteGlobalRef(gMyReference)...}这样全局引用就可以在两个或者多个不同的JNI调用里面安全的使用了
- Android Ndk(Beginner ‘s guide)(3.3)
- Android Ndk(Beginner ‘s guide)(1.2)
- Android Ndk(Beginner ‘s guide)(1.3)
- Android Ndk(Beginner ‘s guide)(2.1)
- Android Ndk(Beginner ‘s guide)(2.2)
- Android Ndk(Beginner ‘s guide)(2.3)
- Android Ndk(Beginner ‘s guide)(2.4)
- Android Ndk(Beginner ‘s guide)(2.5)
- Android Ndk(Beginner ‘s guide)(3.1)
- Android Ndk(Beginner ‘s guide)(3.2)
- Android Ndk(Beginner ‘s guide)(3.4)
- Android Ndk(Beginner ‘s guide)(3.5)
- Android Ndk(Beginner ‘s guide)(4.0)
- Android Ndk(Beginner ‘s guide)(1.1)
- Android.NDK.Beginner's.Guide 一处小错误
- Nginx: Beginner’s Guide
- Cisco: A Beginner's Guide, Fourth Edition (Beginner's Guide
- WAP: A Beginner's Guide
- 逛遭遇百度封杀,白鸦能否突围,Game 是否 Over
- 单链表
- 数学对搞电子的到底有什么用处?
- android之ViewPager带指引
- gCov 1.5版本数据文件格式分析
- Android Ndk(Beginner ‘s guide)(3.3)
- The Monkey's Paw——Chapter 6
- 谈谈snprintf
- 如何在C++中调用C程序?
- 工作感悟
- KPCB互联网女皇2013《互联网趋势报告》88页最全中文版
- ubuntu12.04安装中文输入法(ibus)和开机自动启动ibus应用
- Foundation Kit快速教程复习笔记
- 辛弃疾