欢迎来到天天培训网!全国[切换城市] 登录 注册
首页 发布课程 机构平台 手机浏览

手机扫一扫

咨询热线

400-0808-102

Java类加载的过程-Java类加载的时机

天天培训网络中心   2022-11-22 阅读:18
JAVA类加载的过程-Java类加载的时机

 

Java类加载的过程


 


Java类加载过程主要分为七个阶段:加载、验证、准备、解析、初始化、使用、卸载;其中加载是通过一个类的全限定名加载该类对应的二进制字节流,主要通过类加载器实现。



Java类加载的过程



1、加载



1)通过一个类的全限定名加载该类对应的二进制字节流。主要通过类加载器实现。



2)将字节流所代表的静态存储结构转化为方法区的运行时数据结构。



3)在内存中生成一个代表这个类的java.lang.Class对象,作为方法区各个类访问该类的入口。(Hotspot 在方法区生成该类)。



2、验证



1)文件格式验证:验证类文件的魔术版本号常量等是否符合当前虚拟机支持的范围。



2)元数据验证:验证类的语义信息,是否符合java语言规范的要求。



3)字节码验证:验证程序语义是合法的、合乎规范的。主要通过stackmapframe结构。



4)符号引用验证:虚拟机在将符号引用转化为直接引用,验证符号引用全限定名代表的类是否能够找到,对应的域和方法是否能找到,访问权限是否合法。



3、准备



准备阶段主要是将类变量(被static修饰符修饰)在方法区进行内存分配并进行初始化。



4、解析



1)类或接口解析:将符合引用转化为类的直接引用,并检查访问权限。



2)字段解析:将字段的符号引用转化为字段所属的类信息或其父类该字段的直接引用,并检查访问权限。



3)类方法解析:将类方法的符号引用转化为类方法所属的类信息或其父类该字段的直接引用,并检查访问权限。



4)接口方法解析:将接口方法的符号引用转化为接口方法所属的接口信息或其父类该字段的直接引用,并检查访问权限。



5、初始化



初始化阶段编译器会将类文件声明的静态赋值变量和静态区域合并生成方法并进行调用。



类加载器:类加载器是“通过一个类的全限定名加载这个类的二进制字节流”的实现,对于任何一个类,都是由类加载器和该类的本身共同确定在虚拟机中的唯一性。



双亲委托模型采用这样的方式加载类:当类加载器收到加载类请求时,首先委托父类加载该类,所有类加载器都采用这种方式,因此所有类加载请求都会到达顶层父类,父类加载不到时再使用该类加载器中加载。



这样,类加载器之间就有了一种层级关系,能够保证Java的基础类由相同的类加载器加载,对Java系统的稳定性起到至关重要的作用。


 

Java类加载的时机


 


类从被加载到虚拟机内存中开始,直到卸载出内存为止,它的整个生命周期包括了:加载、验证、准备、解析、初始化、使用和卸载这7个阶段。其中,验证、准备和解析这三个部分统称为连接(linking)。



其中,加载、验证、准备、初始化和卸载这五个阶段的顺序是确定的,类的加载过程必须按照这种顺序按部就班的“开始”(仅仅指的是开始,而非执行或者结束,因为这些阶段通常都是互相交叉的混合进行,通常会在一个阶段执行的过程中调用或者激活另一个阶段),而解析阶段则不一定(它在某些情况下可以在初始化阶段之后再开始,这是为了支持Java语言的运行时绑定(也称为动态绑定或晚期绑定)。


 

Java类加载器有哪些


 


加载:根据类的全限定名获取到其定义的二进制字节流,并将其加载到内存中。此时需要借助类加载器来帮助完成。



全限定名:包名 + 类名。



类加载器分为4类:



%JAVA_HOME%:为JDK设置的环境变量路径。如环境变量里设置了%java_home%=C:jdk1.8.0



1. Bootstrap Classloader:启动类加载器,用来加载 %JAVA_HOME%/jre/lib 下的,如rt.jar中的class文件
或者 xbootclasspath选项指定的jar包



2. Extension Classloader:扩展类加载器,用来加载 %JAVA_HOME%/jre/ext 中的class文件 或者
-Djava.ext.dirs指定目录下的jar包



3. Application Classloader:应用类加载器,用来加载classpath下的class文件



4. Custom Classloader:用户自定义类加载器,用来加载自定义内容.此加载器需要用户自己继承Classloader类。

 

苏州达内教育优势

可先就业后付款
没钱交学费?可选择就业拿到工资后再付款;
企业合作
达内与大型企业签订合作,由达内培养符合要求学员;
企业双选会
每季度举行双选会,让企业与学员面对面交流;
大型招聘会
定期举行大型专场招聘会,提供更好就业机会;
毕业推荐就业
根据学员综合技能匹配企业要求,为学员 推荐就业
人才招聘网站
达内提供IT领域线上招聘平台,助学员更好就业;

关于苏州达内IT教育

中国IT职业教育领军企业 达内时代科技集团有限公司(简称达内教育),美股交易代码:TEDU,成立于2002年。 2014年4月3日成功在美国上市,融资1亿3千万美元。成为中国赴美国上市的职业教育公司,也是引领行业的职业教育公司。 达内致力于面向IT互联网行业,培养软件开发工程师、测试工程师、系统管理员、智能硬件工程师、UI设计师、网络营销工程师、会计等职场人才。2015年起,推出面向青少年的少儿编程、智能机器人编程、编程数学等K12课程。 达内的使命:缔造年轻人的中国梦、缔造达内员工的中国梦 达内的愿景:做管理-的教育公司 开设课程 达内时代科技集团成人类课程方向:Java企业级应用软件工程师、Java互联网架构软件工程师、Java大数据工程师、Web前端开发工程师、网络运维与网络安全、Linux云计算工程师、Python 人工智能软件工程师、-嵌入式软件工程师、C++-软件工程师、PHP/web.3.0互联网工程师、-软件测试工程师、Android软件工程师、IOS软件工程师、.NET软件工程师、全链路UI设计师、商业插画、商业视觉设计课程、产品级UED交互设计师、全栈式CAD设计师、产品经理、VR开发工程师、VR次世代模型师、-网络营销师、新电商运营官、企业级影视视效、人力资源经理人课程、总账会计课程

苏州达内IT培训中心环境
以上内容是达内IT教育的小编为大家整理的“Java类加载的过程-Java类加载的时机”相关信息。如需了解IT相关课程信息、开课时间、课程内容、相关班型等,可拨打我们咨询电话或向在线客服获取课程资料,也可在线留言或预约试听课程,我们课程顾问将会尽快联系您。为您量身定制专属课程,开启您的学习之旅。
联系我们

江苏省

苏州市沧浪区东吴北路221号惠康新地5楼
南京市秦淮区中山东路532-2号 南工院金蝶大学科技园A2栋2楼
南京市雨花台区软件大道66号华通科技园一楼105室
南京市秦淮区中山东路532-2号 南工院金蝶大学科技园A5栋2楼
无锡市新区湘江路2-3金源国际大厦A座1506
北京|上海|广州|深圳|南京|成都|武汉|西安|青岛|天津|杭州|重庆|厦门|哈尔滨|济南|福州|沈阳|合肥|郑州|长春|苏州|大连|长沙|昆明|温州|太原|南昌|无锡|石家庄|南宁|中山|兰州|佛山|珠海|宁波|贵阳|保定|呼和浩特|东莞|洛阳|潍坊|烟台|运城

 

 

免责声明:
本站内容系网友自发上传与转载,不代表本网赞同其观点;
如涉及版权等问题请及时与我们联系,将在第一时间删除处理!qq:895240345 .