日韩性视频-久久久蜜桃-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 )的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 玖操| 韩国女主播av | 性天堂网 | 极品国产一区 | 日本乱码一区 | av大片免费在线观看 | 国产精品成人电影在线观看 | 99er久久| 亚洲欧美自拍另类 | 欧美另类极品 | 青青青草国产 | 精品处破女学生 | 美女娇喘 | 久久精品久久精品久久 | 国产精品一区二区免费 | 美国黄色a级片 | 中国大陆一级毛片 | 好吊妞视频在线 | 久久这里只有精品首页 | 依依成人在线视频 | 国产精品日 | 国产av国片偷人妻麻豆 | 国产精品wwww | 欧美视频在线观看一区二区 | 欧美巨大荫蒂茸毛毛人妖 | 欧美综合一区二区三区 | jizz久久| 我我色综合 | 欧美视频xxx | 特黄级 | 娇妻av| 97国产在线观看 | 国产女人精品视频 | 久久国产视频精品 | 在线观看黄色动漫 | 天天干天天插 | 欧美最猛性xxxx | 黄色一级视屏 | 少妇2做爰bd在线意大利堕落 | 鲁一鲁在线 | 欧美高清视频一区二区 | 亚洲精品视频免费在线观看 | 致命魔术电影高清在线观看 | 中国美女一级黄色片 | 中文字幕一区二区三区人妻 | 91美女高潮出水 | 国产亚洲精品久久久 | 99精品视频一区二区三区 | 亚洲另类视频 | 国产精品夫妻自拍 | 1000部啪啪| 亚州精品国产精品乱码不99按摩 | 精品国模一区二区三区欧美 | 国产又粗又硬 | 亚洲婷婷小说 | 熟妇高潮精品一区二区三区 | 国产精品成人Av | 精东传媒在线 | 日本熟妇人妻xxxxx | 成人精品在线播放 | 黑人狂躁日本妞hd | 伊人中文网| 国产精品hd | 亚洲第一视频在线 | 在线爱情大片免费观看大全 | 亚洲av无码不卡一区二区三区 | 色香影院 | 亚洲一区二区三区不卡视频 | 中文不卡在线 | 日本啪啪啪一区二区 | 波多野结衣精品在线 | 台湾黄色网址 | 国产免费不卡 | 国产情侣av在线 | 大学生av| 免费麻豆av| 欧美日韩1 | 蘑菇av| 黄色片视频免费看 | 夜夜嗨一区二区三区 | 老妇女玩小男生毛片 | 国产黄色av | 国产午夜毛片 | 亚洲第一页av| 欧美亚洲视频在线观看 | 乱人伦中文字幕 | 中文字幕在线一区 | 亚洲日日日 | 精品人妻无码中文字幕18禁 | 日韩精品在线观看免费 | 久久精精品久久久久噜噜 | 99久久精品国产色欲 | 国产经典三级 | 午夜一二区 | 日韩在线视频免费看 | 久久久国产成人 | 一本一道久久a久久精品蜜桃 | 爱爱精品 | 俺去俺来也在线www色官网 |