Androidのクラスローダーのプロセスとは何ですか。
Androidのクラスロード処理は以下のステップに分けられます。
- クラスの完全限定名(パッケージ名 + クラス名)からバイトコードファイル(.class ファイルまたは .dex ファイル)を検索してメモリに読み込む。
- リンク(連携)
- バイトコードファイルの検証(Verification):形式の正当性を確実にすることで、悪意のあるコードが挿入されないようにすること
- 静的変数のメモリ確保とデフォルトの初期値設定
- リゾルーション: クラス、インターフェイス、メソッドなどのシンボル参照をダイレクト参照に変換すること
- クラスの初期化(静的変数の代入や静的コードブロックの初期化を含む)
Androidでは、クラスのロードはClassLoaderによって行われます。AndroidでのClassLoaderは、Bootstrap ClassLoader、System ClassLoader、Application ClassLoaderの3つの階層に分けられます。このうち、Bootstrap ClassLoaderはコアライブラリのロードを担当し、System ClassLoaderはシステムクラスのロードを担当し、Application ClassLoaderはアプリケーションのクラスのロードを担当します。