java类的加载过程

java类的加载过程大体分为两个部分:加载,解释
1.先通过加载器找到.java文件
加载:
2. 通过编译器得到.class文件,并将其载入内存,并创建class对象的过程
类的加载器主要分为:
1> 系统类加载器(bootstrap classloader) 存放在 jre/lib/rt.jar (是由C++实现)
2>扩展类加载器(extension classloader)存放在 jre/lib/ext/…jar
3>自定义加载器(application classloder)
类的加载过程中采用的是双亲委派模型:
即:从子类(app)依次向上查找,之前类的加载器是否加载过这个类。
如果加载过,把之前加载过程中生成的class对象返回
没加载过,从父类到子类依次尝试加载,加载过程中返回类信息(class对象)(判 断是否在管辖范围)
为什么采用采用双亲委派模型:
1> 避免的重复加载 (如果存在于几个管辖范围下 ,会重复加载)
2> 安全因素,自定义系统类(在里面存放病毒),会加载到jvm内存中,但是如果采用双亲委派,系统类会在程序启动时就加载,自定义的类则不会加载,只会返回前边加载的class对象。
获取class对象的方法:
1>Class c =类名.class;
2>Class c =Clsaa.forname(“包路径.类名”);
3>对象名.getclass();
3.链接过程:(分为验证,准备,解析三个阶段)
验证:检查字节码文件的安全性:验证class对象能否在虚拟机上运行
准备:给类变量开辟内存(方法区)并初始化类变量。
解析:将符号引用替换为直接引用 符号引用为 #+数字 直接引用是在jvm分配内存的地址。
4.通过解释器得到运行结果

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值