Android 插件化插件化原理 ( JVM 內(nèi)存數(shù)據(jù) | 類加載流程 )

      網(wǎng)友投稿 945 2025-04-01

      Android 插件化系列文章目錄

      【Android 插件化】插件化簡介 ( 組件化與插件化 )

      【Android 插件化】插件化原理 ( JVM 內(nèi)存數(shù)據(jù) | 類加載流程 )

      【Android 插件化】插件化原理 ( 類加載器 )

      【Android 插件化】“ 插樁式 “ 插件化框架 ( 原理與實現(xiàn)思路 )

      【Android 插件化】“ 插樁式 “ 插件化框架 ( 類加載器創(chuàng)建 | 資源加載 )

      【Android 插件化】“ 插樁式 “ 插件化框架 ( 注入上下文的使用 )

      【Android 插件化】“ 插樁式 “ 插件化框架 ( 獲取插件入口 Activity 組件 | 加載插件 Resources 資源 )

      【Android 插件化】“ 插樁式 “ 插件化框架 ( 運行應(yīng)用 | 代碼整理 )

      文章目錄

      Android 插件化系列文章目錄

      一、動態(tài)加載 " 插件 "

      二、Java 虛擬機中的內(nèi)存存儲

      三、類加載流程

      一、動態(tài)加載 " 插件 "

      插件化 中 ,

      " 宿主 " 模塊

      " 插件 " 模塊

      可以分開進行編譯 , 二者之間互不影響 , 各個模塊可以并發(fā)進行開發(fā) ,

      " 宿主 " 模塊

      可以

      動態(tài)更新插件 ;

      動態(tài)加載 " 插件 " 模塊

      是插件化開發(fā)的核心 ;

      動態(tài)加載 : " 宿主 " 模塊 , 沒有具體的業(yè)務(wù) , 只提供一個空殼 , 功能邏輯實現(xiàn)都在 " 插件 " 模塊中 , 在程序運行之后 , 才動態(tài)加載 " 插件 " 模塊 APK 文件 ;

      組件化 主要是設(shè)計好整個程序的架構(gòu) , 使用

      Gradle

      控制并切換

      組件模式 / 集成模式

      , 核心是

      組件路由

      的使用 ;

      插件化 的核心就是實現(xiàn)

      " 插件 " APK 的

      動態(tài)加載與調(diào)用 ;

      二、Java 虛擬機中的內(nèi)存存儲

      程序運行之后 , 通過

      ClassLoader

      可以

      動態(tài)地加載類

      ; 加載后的 字節(jié)碼 數(shù)據(jù)都存放在

      Java 虛擬機的運行期數(shù)據(jù)區(qū)

      中 ;

      手機為 JVM 虛擬機分配一塊內(nèi)存 , 總稱為 JVM 運行期數(shù)據(jù)區(qū) , 該數(shù)據(jù)區(qū)分為以下幾塊內(nèi)容 ,

      格局線程劃分 , 可以分為

      線程共享數(shù)據(jù)區(qū)

      線程不共享數(shù)據(jù)區(qū) ;

      線程不共享數(shù)據(jù)區(qū) 中 , 包含如下幾個內(nèi)存區(qū)域

      JVM 棧

      : Java 虛擬機棧 , 存放 局部變量 , Class 字節(jié)碼數(shù)據(jù) ;

      本地方法棧 ;

      程序計數(shù)器

      : 該區(qū)域沒有 OOM ;

      線程共享的區(qū)域

      Java 堆

      : Java 中通過 new 創(chuàng)建的對象 , 都存放在 Java 堆中 ;

      方法區(qū)

      : 存儲 常量值 , 靜態(tài)變量 , 該內(nèi)存區(qū)域的數(shù)據(jù)很少被回收 ;

      Student student = new Student();

      1

      上述方法涉及到了 3 3 3 個區(qū)域 ,

      區(qū)域 1 1 1 : new Student() 創(chuàng)建的對象在 Java 堆中 ;

      區(qū)域 2 2 2 : Student student 放在 Java 虛擬機棧中 , 保存了指向 Java 堆中對象的地址 ;

      區(qū)域 3 3 3 : 程序計數(shù)器 ;

      類加載時 , 在上述 JVM 棧中拿到 Class 字節(jié)碼數(shù)據(jù) , 生成 Class 對象 ;

      加載 Student 類的 Class 字節(jié)碼對象的情景 :

      ① 調(diào)用 new Student() 構(gòu)造函數(shù)

      , 一定會將 Student.class 類對象加載到內(nèi)存中 , 該 Class 類字節(jié)碼對象 內(nèi)存中只存在一個 ; 如果程序中沒有加載 Student 類對象 , 就無法使用 Student 類 ;

      ② Student 類中有靜態(tài)變量 ;

      ③ Student 類的子類 Class 對象加載 ;

      三、類加載流程

      具體的動態(tài)加載 Class 的流程參考如下步驟 :

      1 . 步驟一 : 獲得系統(tǒng)

      DexPathList

      中的

      Element[] dexElements

      數(shù)組 ,

      (

      libcore/dalvik/src/main/java/dalvik/system/DexPathList.java

      ) ;

      2 . 步驟二 : 在本應(yīng)用中創(chuàng)建

      Element[] dexElements

      數(shù)組 , 用于存放解密后的 dex 文件 ;

      3 . 步驟三 : 將 系統(tǒng)加載的 Element[] dexElements 數(shù)組 , 與我們自己創(chuàng)建的 Element[] dexElements 數(shù)組進行

      合并操作

      4 . 步驟四 :

      替換

      ClassLoader 加載過程中的

      【Android 插件化】插件化原理 ( JVM 內(nèi)存數(shù)據(jù) | 類加載流程 )

      Element[] dexElements 數(shù)組

      ( 封裝在 DexPathList 中 ) ;

      參考博客 : 在 Dex 加固 和 熱修復(fù)中 , 都使用了上述原理 ;

      【Android 安全】DEX 加密 ( 代理 Application 開發(fā) | 加載 dex 文件 | 反射獲取系統(tǒng)的 Element[] dexElements )

      【Android 熱修復(fù)】熱修復(fù)原理 ( 類加載機制 | PathClassLoader 加載 Dex 機制 | PathDexList 查找 Class 機制 | 類查找的順序機制 )

      Android JVM

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:IT項目管理工具全面解析:助力項目團隊協(xié)同合作
      下一篇:excel制作甘特圖模板(excel甘特圖制作方法)
      相關(guān)文章
      亚洲国产av美女网站| 亚洲人成无码网站| 亚洲美女一区二区三区| 夜夜春亚洲嫩草影院| 无码欧精品亚洲日韩一区夜夜嗨 | 亚洲区小说区图片区| 亚洲欧美日韩国产成人| 亚洲色图激情文学| 国产精品亚洲片夜色在线| 456亚洲人成影院在线观| 国产成人精品日本亚洲18图| 亚洲高清一区二区三区| 亚洲一区二区三区无码国产| 亚洲制服丝袜第一页| 亚洲精品456人成在线| 亚洲日韩乱码中文字幕| 亚洲欧美日本韩国| 亚洲国产精品无码久久九九大片| 亚洲熟妇丰满xxxxx| 欧美亚洲国产SUV| 亚洲国产成人VA在线观看| 久久精品国产精品亚洲| 国产偷v国产偷v亚洲高清| 亚洲AV无码成人专区片在线观看 | 国产精品亚洲lv粉色| 亚洲性无码av在线| 亚洲成人福利在线| 亚洲国产亚洲综合在线尤物| 亚洲一区二区三区精品视频| 亚洲无吗在线视频| 亚洲youwu永久无码精品| 欧美亚洲精品一区二区| 亚洲成?v人片天堂网无码| 亚洲国产香蕉人人爽成AV片久久 | 亚洲国产AV无码一区二区三区| 色窝窝亚洲AV网在线观看| 亚洲XX00视频| 亚洲国产美女精品久久久久∴| 亚洲国产精品久久久久网站| 亚洲黄色在线观看视频| 亚洲最大av资源站无码av网址|