类加载器体系

类加载器是沙箱的第一道防线,负责将类载入JVM中。

安全作用:

一、保护善意代码不被恶意代码干扰;

二、保护已验证的类库;

三、代码放入有不同行为限制的各代码域当中。

类加载器的分类:

一、引导类加载器,Bootstrap ClassLoader (C 实现)负责核心类的加载。

二、ExtClassLoader(Laucher的内部类)

    由Bootstrap ClassLoader类加载,用于装载运行环境扩展包(jre/lib/ext)中的类,而且一旦建立其加载路径将不会改变,父加载器为NULL。

三、AppClassLoader(Laucher的内部类)

    父加载器为ExtClassLoader,本身也由Bootstrap ClassLoader类加载。如果程序中没有类装载相关操作设定或者自定义新的类装载器,那么编写的Java类都由此加载器装载,加载路径就是ClassPath.

四、ClassLoader

    一般自定义的ClassLoader从ClassLoader继承而来。

ClassLoader的一些重要方法:

1、loadClass(String fullName,boolean resolve)

    参数:fullName 要加载类的完整名(包括包名)

    参数: resolve 是否需要解析类

此方法为ClassLoader的入口点。

2、final defineClass(...) 

    此方法是ClassLoader的主要诀窍。该方法接受由原始字节组成的数组并将其转换为Class对象。原始字节数组包含从文件系统或网络装入的数据。此方法已实现且定义为final不可覆盖。

3、final findSystemClass(...)

    此方法从本地系统装入文件。

4、final resolveClass(...)

    如loadClass方法的参数resolve所示,可以不完全地(不解析)装入类,也可以完全地(带解析)装入类。

5、final findLoadedClass(...)

    在请求loadClass装入类时,调用此方法来查看ClassLoad是否已装入这个类,避免重复装载。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值