java classloader

classloader  分为 四种, bootstrapclassloader extclassloader appclassloader 还有用户自定义的classloader ,bootstrapclassloader是用来加载最核心的class的,extclassloader和appclassloader也是在这时候被加载的。extclassloader是加载一些扩展类库的class的,appclassloader是用来加载用户的classpath里面的类的。用户自定义的classloader,这是用户编写的。

classloader会有parent 如果为空的话,那就认为parent是bootstrap。

加载一个类的时候,是从底层开始检查该类有没有被load进来,层层向上,当载入类的时候,是从上向下载入,每次都是检查父类有没有加载过要用的类,如果父类加载过了,那就不加载,如果父类没有加载,那就父类去加载,如果父类不能加载,那就自己加载。

这样的好处是,只有当底下需要用到类的时候才会去检查,而父类加载可以避免重复加载,并且可以防止子类加载了错误的类,将正确的覆盖了。

class文件包含的内容
  • 结构信息。包括class文件格式版本号及各部分的数量与大小的信息
  • 元数据。对应于Java源码中声明与常量的信息。包含类/继承的超类/实现的接口的声明信息、域与方法声明信息和常量池
  • 方法信息。对应Java源码中语句和表达式对应的信息。包含字节码、异常处理器表、求值栈与局部变量区大小、求值栈的类型记录、调试符号信息
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值