日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

【Android NDK 开发】JNI 引用 ( 弱全局引用 | NewWeakGlobalRef | DeleteWeakGlobalRef )

發布時間:2025/6/17 Android 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Android NDK 开发】JNI 引用 ( 弱全局引用 | NewWeakGlobalRef | DeleteWeakGlobalRef ) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

        • I . 弱全局引用
        • II . 弱全局引用判定是否被回收
        • III . 弱全局引用 創建 與 刪除 ( NewWeakGlobalRef | DeleteWeakGlobalRef )
        • IV . 弱全局引用代碼示例



I . 弱全局引用



若全局引用 特點 : 弱全局引用 最大的特點是 可以被 JVM 自動回收 ;


弱全局引用 作用域 :

① 空間 : 都可以 跨方法 , 跨線程使用

② 時間 : 創建弱全局引用后可以開始使用 , JVM 自動回收 或 手動釋放 該弱全局引用不可用 ;


弱全局引用 與 全局引用 區別 :

① 全局引用 : 不能被 回收 , 如果內存不足就 拋出異常

② 弱全局引用 : 當內存不足時 , 會被系統自動回收



II . 弱全局引用判定是否被回收



弱全局引用 判定是否被回收 :


使用 IsSameObject(弱引用變量 , NULL) 判斷該對象是否被回收了 , 將其與 NULL 比較 , 即可判定該若全局引用是否被 JVM 回收 ;

① 返回 true ( 該對象與NULL相等 ) : 該若全局引用已經被釋放 ;

② 返回 false ( 該對象與NULL不相等 ) : 該弱全局引用還可以使用 ;



III . 弱全局引用 創建 與 刪除 ( NewWeakGlobalRef | DeleteWeakGlobalRef )



函數原型 :

struct _JNIEnv {/* _JNIEnv 結構體中封裝了 JNINativeInterface 結構體指針 */const struct JNINativeInterface* functions;...// 最終 調用的 還是 JNINativeInterface 結構體中封裝的 NewWeakGlobalRef 方法jweak NewWeakGlobalRef(jobject obj){ return functions->NewWeakGlobalRef(this, obj); }// 最終 調用的 還是 JNINativeInterface 結構體中封裝的 DeleteWeakGlobalRef 方法void DeleteWeakGlobalRef(jweak obj){ functions->DeleteWeakGlobalRef(this, obj); }... }

① NewWeakGlobalRef : 傳入局部變量作為參數 , 創建弱全局引用 ;

② DeleteWeakGlobalRef : 釋放弱全局引用 ;



IV . 弱全局引用代碼示例



// 弱全局引用 // 訪問時如果局部變量也有同名變量 , 可以使用 域作用符 訪問 // ::class_teacher_weak_global 表示訪問全局的變量 jclass class_teacher_weak_global;extern "C" JNIEXPORT void JNICALL Java_kim_hsl_jni_MainActivity_jniWeakGlobalReferenceTest(JNIEnv *env, jobject instance) {/*弱全局引用弱全局引用 與 Java 引用類似弱全局引用 作用域 :空間 : 都可以 跨方法 , 跨線程使用時間 : 創建弱全局引用后可以開始使用 , JVM 自動回收 或 手動釋放 該弱全局引用不可用弱全局引用 與 全局引用 區別 :全局引用 : 不能被 回收 , 如果內存不足就 拋出異常弱全局引用 : 當內存不足時 , 會被系統自動回收弱全局引用 判定是否被回收 :使用 IsSameObject(弱引用變量 , NULL) 判斷該對象是否被回收了 , 將其與 NULL 比較 , 即可判定返回 true ( 該對象與NULL相等 ) : 該若全局引用已經被釋放返回 false ( 該對象與NULL不相等 ) : 還可以使用*/// 1 . 獲取 Teacher 類 ( 該變量需要釋放 )//如果 class_teacher_weak_global 對象被回收 , 返回 true ; 沒有被回收返回 false ;jboolean isClassReleased = env->IsSameObject(class_teacher_weak_global, NULL);if( class_teacher_weak_global == NULL || isClassReleased ) {//生成局部引用 , 該局部引用使用完畢后可釋放jclass tmp_class = env->FindClass("kim/hsl/jni/Teacher");//將上述生成的局部引用變成弱全局引用// 弱全局引用釋放時 , env->DeleteWeakGlobalRef(class_teacher_weak_global) 即可釋放下面轉換的弱全局引用class_teacher_weak_global = static_cast<jclass>(env->NewWeakGlobalRef(tmp_class));//將局部引用釋放掉env->DeleteLocalRef(tmp_class);}}

總結

以上是生活随笔為你收集整理的【Android NDK 开发】JNI 引用 ( 弱全局引用 | NewWeakGlobalRef | DeleteWeakGlobalRef )的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 调教驯服丰满美艳麻麻在线视频 | 午夜剧场福利社 | 日日爱影视 | 午夜精| 成人性生交生交视频 | 亚洲字幕成人中文在线观看 | 亚洲制服丝袜一区 | 亚洲aⅴ | 天堂视频在线免费观看 | 成人免费无码大片a毛片抽搐色欲 | 麻豆精品国产传媒av绿帽社 | 无码国产精品96久久久久 | 五月天丁香在线 | 日本不卡高字幕在线2019 | 久久爱一区二区 | 国产又爽又黄的视频 | 精品动漫3d一区二区三区免费版 | 在线观看黄色国产 | 成人一二区 | 高清日韩 | 非洲黑人狂躁日本妞 | 色偷偷免费视频 | 免费网站观看www在线观看 | 亚洲人成在线观看 | 四虎www| 欧美精品99久久久 | 日韩八区 | 国产精品扒开腿做爽爽爽男男 | 99久久视频| 一级做a爰片毛片 | 日本精品免费视频 | 人妻丝袜一区二区三区 | 日本在线视频www | 日韩大片免费观看 | 色xxxxxx | 亚洲免费av在线 | 欧美性插动态图 | 亚洲精品视频导航 | 善良的女朋友在线观看 | 咪咪色影院 | 国产三级在线免费观看 | 国产老女人精品毛片久久 | 日韩综合 | 超碰在线人人草 | 欧美激情视频一区二区三区 | 99热影院| 99re6在线观看 | 久久久久久久久久久影视 | 国产高清不卡 | 美女免费福利视频 | av片一区二区 | 日本在线一区二区三区 | 中文字幕精品三级久久久 | 就爱啪啪网 | 综合图区亚洲 | 日韩欧美专区 | 动漫美女舌吻 | 88av在线播放| 国产极品视频在线观看 | 爱爱一级| 免费看污片网站 | 无码人妻av一区二区三区波多野 | 久久综合激的五月天 | 五月开心激情网 | 视频在线观看91 | 伊人久色| 国产aa视频 | 欧美不卡网 | 我看黄色一级片 | av丁香| 成人网入口| 香蕉视频在线网站 | 精品成人中文无码专区 | 亚洲自拍色图 | 色优久久 | 二区不卡 | 免费天堂av | 久久精品美乳 | 夜夜夜夜爽 | 国产色站| 成人高清免费 | 国产激情影院 | 天天撸天天操 | 亚洲一区激情 | 丰满少妇高潮久久三区 | 日韩久久一区二区 | 午夜日韩视频 | 婷婷在线免费观看 | 想要xx在线观看 | 欧美成人国产 | 91一级片| 日韩经典午夜福利发布 | 欧美一级无毛 | 国产免费无码一区二区视频 | 手机在线中文字幕 | 欧美人体一区二区 | 骚av在线 | 欧美精品在线看 | 献给魔王伊伏洛基亚吧动漫在线观看 |