双亲委派机制
ClassLoader 抽象类
除了 Bootstrap(它是 C++ 的),类加载器都要继承此抽象类
主要方法如下
方法名 | 作用 | 备注 |
---|---|---|
public Class> loadClass(String name) | 双亲委派机制的实现 | |
protected Class> findClass(String name) | 读取字节码文件到内存后通过 defindClass 方法 | 直接调用此方法可以跳过双亲委派 |
protected final Class> defineClass(String name, byte[] b, int off, int len) | 先判断是否加载过,然后将字节数组解析成 Class 对象 | |
protected final void resolveClass(Class> c) | 连接指定的类 |
沙箱安全机制
虚拟机会把所有代码加载到不同的系统域和应用域。系统域部分专门负责与关键资源进行交互,而各个应用域部分则通过系统域的部分代理来对各种需要的资源进行访问。虚拟机中不同的受保护域(Protected Domain),对应不一样的权限(Permission)。存在于不同域中的类文件就具有了当前域的全部权限,如下图所示
本文部分内容来自 java类加载器、双亲委派、沙箱安全机制全都让你整明白