JVM クラスローディングの安全性確保の仕組み
JVM のクラスロードセキュリティは主に次のような方法で実装されています。
- JVMは、クラスのロードの安全性を保証するために、親子委譲モデルを採用しています。クラスがロードされる必要がある場合、まず親クラスローダーにロードを委任し、親クラスローダーがそのクラスをロードできない場合にのみ、子クラスローダーがロードします。これにより、複数のクラスローダーによって同じクラスがロードされることを避け、クラスの一意性を確保できます。
- クラスローダーの隔離:JVM内のクラスローダーは互いに隔離されており、各クラスローダーは自分がロードしたクラスしかロードできず、他のクラスローダーがロードしたクラスにアクセスすることはできません。これにより、異なるクラスローダー間でのクラスの干渉を防ぎ、クラスのロードの安全性を確保します。
- クラスローダーの双方向委任:JVM内のクラスローダーの双方向委任メカニズムは、クラスローダー間の依存関係を確実にし、クラスのロードプロセスの完全性と正確性を保証します。
上記の方法により、JVMはクラスローディングの安全性を実現し、クラスの一意性と正確性を確保し、悪意のあるコードのロードと実行を防止しています。