博为峰软件技术股份有限公司(股票代码:836392)2020年4月入选新三板创新层,旗下拥有“学掌门”、“51Testing”等职业教育品牌。公司紧跟市场和技术的变化趋势,致力于培养、输送优秀的职业人才,成立数十年来累计培养软件开发工程师、软件测试工程师、数据分析师等行业紧缺人才50000+;自主研发掌握核心技术,为客户提供卓越的产品、服务和整体解决方案。公司总部位于上海,在北京、深圳、广州、成都、南京、西安、武汉、杭州、重庆、济南、合肥、苏州、长沙、南昌、石家庄、郑州、青岛、昆山等地均设有分支服务机构。
Java常见面试题:类的加载过程
在程序员看似光明的就业前景面前,是层层面试逃不过的。想要进入前列的大公司是不可能面面俱到的!找工作第一关就是笔试。想获得高薪工作,先刷一波面试题!
今天java培训师分享的面试问题是——类加载过程。
类加载过程主要包括加载、验证、准备、解析、初始化、使用、卸载七个方面。
一.装货
在加载阶段,虚拟机主要完成三件事:
1.获取通过完全限定名定义类的二进制字节流。
2.将此字节流表示的静态存储结构转换为方法区域的运行时数据结构。
3.在java堆中生成一个表示该类的java.lang.Class对象,该对象用作方法区域数据的访问门户。
二.确认
验证阶段的目的是确保类文件的字节流中包含的信息符合JVM规范,并且不会对JVM造成损害。如果验证失败,将抛出java.lang.VerifyError异常或其子类异常。验证过程分为四个阶段。
1.文件格式验证:验证字节流文件是否符合Class文件格式规范,是否能被当前虚拟机正确处理。
2.元数据验证:对字节码描述的信息进行语义分析,确保字节码描述的信息符合Java语言的规范。
3.字节码验证:主要分析数据流和控制流,保证被验证类的方法在运行时不会伤害虚拟机。
4.符号引用验证:当虚拟机将符号引用转换为直接引用时,会发生符号引用验证,这种转换操作将发生在解析阶段。
三.准备
Stage准备为变量分配内存,并设置类变量的初始化。在这个阶段,只分配类的变量(静态修改变量),不包括类的实例变量。对于非最终变量,JVM会将它们设置为“零值”,而不是赋值语句的值:
pirvate static int size = 12
那么在这个阶段,size的值是0而不是12。由final修饰的类变量将被赋给实数值。
4.分析
解析过程是用直接引用替换常量池中的符号引用。包括四种主要引用类型的解析。或者类接口分析,字段分析,方法分析,接口方法分析。
5.初始化
在准备阶段,类变量已经初始化一次。在这个阶段,根据程序员通过程序制定的计划初始化类变量和其他资源。这些资源包括静态{}块、构造函数、父类初始化等。
至于使用和卸载阶段,这里不再赘述。使用过程按照程序定义的行为执行,卸载由GC完成。
以上是Java培训课程的《重庆Java培训机构名单榜首一览-博为峰IT教育》,希望对您有所帮助。更多Java培训信息请在线咨询客服老师或拔打页面老师电话咨询!

博为峰使命
专注职业人才培训领域,紧跟市场和技术的变化趋势,致力于培养、输送优秀的职业人才;
自主研发掌握核心技术,为客户提供卓越的产品、服务和整体解决方案。
核心价值观
践行良心教育,铺就职业坦途!


详情了解:方老师
联系电话:18860379553(同vx号)

