【Android 逆向】类加载器 ClassLoader ( 类加载时机 | 隐式加载 | 显示加载 | 类加载步骤 | 装载 | 链接 | 初始化 )
生活随笔
收集整理的這篇文章主要介紹了
【Android 逆向】类加载器 ClassLoader ( 类加载时机 | 隐式加载 | 显示加载 | 类加载步骤 | 装载 | 链接 | 初始化 )
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 一、類加載時機
- 1、隱式加載
- 2、顯式加載
- 二、類加載步驟
一、類加載時機
1、隱式加載
類加載 的 隱式加載 , 沒有明確的說明加載某個類 , 但是進行了如下操作 :
- 使用 new 關鍵字 直接 創建類的實例對象 ;
- 使用 new 關鍵字 直接 創建類的 子類 實例對象 ;
- 通過 反射方式 創建 類 / 子類 實例對象 ;
- 訪問 類的 靜態變量 , 對靜態變量 進行 讀 或者 寫 操作 都會觸發 隱式加載 ;
- 訪問 類的 靜態函數 ;
2、顯式加載
顯式加載 : 明確的說明要加載某個類 ,
- 使用 Class.forName() 加載指定的類 ;
- 使用 ClassLoader.loadClass 加載指令的類 ;
二、類加載步驟
參考 【Java 虛擬機原理】Java 類加載過程 ( 加載 | 連接 - 驗證 準備 解析 | 初始化 | 使用 | 卸載 ) 博客 ;
類加載步驟 :
- ① 裝載 : 加載某個類時 , 首先要 查找 并 導入 Class 字節碼文件 ;
- ② 鏈接 : 該階段 , 可以分為以下 333 個子階段 ;
- 驗證 : 驗證字節碼文件是否正確 ;
- 準備 : 為 靜態變量 劃分內存空間 , 并進行默認值賦值 ;
- 解析 : 將 " 常量池 " 中的 " 符號引用 " 轉為 " 直接引用 " ;
- ③ 初始化 : 調用 clinit 函數 , 初始化 靜態變量 靜態代碼塊 ;
總結
以上是生活随笔為你收集整理的【Android 逆向】类加载器 ClassLoader ( 类加载时机 | 隐式加载 | 显示加载 | 类加载步骤 | 装载 | 链接 | 初始化 )的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Android 逆向】类加载器 Cla
- 下一篇: 【Android 逆向】类加载器 Cla