类加载器

java代码在编译后会变成java字节码,字节码被类加载器加载到JVM里,JVM执行字节码,最终要转化为汇编指令在CPU上执行

类装载器ClassLoader

类加载概念:通过一个类的全限定名来获取描述此类的二进制字节流,每一个类加载器都有一个独立的类名称空间,比较2个类是否相等,只有在这2个类是由同一个类加载器加载的前提下才有意义。

ClassLoader是一个抽象类
ClassLoader的实例将读入Java字节码.class将类装载到JVM中
ClassLoader可以定制,满足不同的字节码流获取方式

ClassLoader负责类装载过程中的加载阶段,只负责类读进

类加载器细分:

bootstrap ClassLoader启动类加载器

Extension ClassLoader扩展类加载器

Application ClassLoader应用程序类加载器

Custom ClassLoader(自定义ClassLoader)

每个ClassLoader都有一个Parent作为父亲

 

双亲委派模型存在问题:因为自底向上 询问 自顶向下 加载

好处:兼容性:保证一个类在程序的各种类加载器环境中都是统一个类

           安全性:保证加载的类都是官方的类,不会加载到蓄意破坏的类

ClassLoader的重要方法:

public Class<?> loadClass(String name) throws ClassNotFoundException
载入并返回一个Class
protected final Class<?> defineClass(byte[] b, int off, int len)
定义一个类,不公开调用
protected Class<?> findClass(String name) throws ClassNotFoundException
loadClass回调该方法,自定义ClassLoader的推荐做法
protected final Class<?> findLoadedClass(String name) 
寻找已经加载的类

(如果要自定义一个classLoader,就需要重写或者调用这些方法)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值