程序员看似光鲜的就业前景面前,逃不过的是层层的面试,想要进前沿的大公司没有个五六七八面,是不可能滴!而找工作的首个关卡就是笔试,想要获得高薪工作的小伙伴,先刷一波面试题吧!

  今天给大家分享的面试题是——类的加载过程。

  类加载过程主要包含加载、验证、准备、解析、初始化、使用、卸载七个方面,下面一一阐述。

  一、加载

  在加载阶段,虚拟机主要完成三件事:

  1.通过一个类的全限定名来获取定义此类的二进制字节流。

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

  3.在Java堆中生成一个代表这个类的java.lang.Class对象,作为方法区域数据的访问入口

  二、验证

  验证阶段作用是保证Class文件的字节流包含的信息符合JVM规范,不会给JVM造成危害。如果验证失败,就会抛出一个java.lang.VerifyError异常或其子类异常。验证过程分为四个阶段

  1.文件格式验证:验证字节流文件是否符合Class文件格式的规范,并且能被当前虚拟机正确的处理。

  2.元数据验证:是对字节码描述的信息进行语义分析,以保证其描述的信息符合Java语言的规范。

  3.字节码验证:主要是进行数据流和控制流的分析,保证被校验类的方法在运行时不会危害虚拟机。

  4.符号引用验证:符号引用验证发生在虚拟机将符号引用转化为直接引用的时候,这个转化动作将在解析阶段中发生。

  三、准备

  准备阶段为变量分配内存并设置类变量的初始化。在这个阶段分配的仅为类的变量(static修饰的变量),而不包括类的实例变量。对已非final的变量,JVM会将其设置成“零值”,而不是其赋值语句的值:

  pirvate static int size = 12;

  那么在这个阶段,size的值为0,而不是12。 final修饰的类变量将会赋值成真实的值。

  四、解析

  解析过程是将常量池内的符号引用替换成直接引用。主要包括四种类型引用的解析。类或接口的解析、字段解析、方法解析、接口方法解析。

  五、初始化

  在准备阶段,类变量已经经过一次初始化了,在这个阶段,则是根据程序员通过程序制定的计划去初始化类的变量和其他资源。这些资源有static{}块,构造函数,父类的初始化等。

  至于使用和卸载阶段阶段,这里不再过多说明,使用过程就是根据程序定义的行为执行,卸载由GC完成。

Java常见面试题:类的加载过程相关推荐

  1. Java常见面试题之类的加载过程

    程序员看似光鲜的就业前景面前,逃不过的是层层的面试,想要进前沿的大公司没有个五六七八面,是不可能滴!而找工作的首个关卡就是笔试,想要获得高薪工作的小伙伴,先刷一波面试题吧! 类加载过程主要包含加载.验 ...

  2. Java常见面试题,2021年及答案汇总

    Java常见面试题,2021年及答案汇总 其实,博主还整理了,更多大厂面试题,直接下载吧 下载链接:高清172份,累计 7701 页大厂面试题 PDF 1.什么是ThreadPoolExecutor? ...

  3. 总结Java常见面试题和答案

    转载自  总结Java常见面试题和答案 int和Integer有什么区别?   答:int是java的原始数据类型,Integer是java为int提供的封装类,java为每个原始数据类型都提供了封装 ...

  4. Java常见面试题 Java面试必看 (一)

    本篇博客是本人收集网上Java相关的资料整理所得,仅供参考. 一.Java基础 1.JDK 和 JRE区别 JDK(Java Development Kit)是针对Java开发员的产品,是整个Java ...

  5. Java常见面试题整理(一)

    Java常见面试题整理 字符串 抽象类与接口 集合 多线程 锁 IO流 网络编程 字符串 主要包括String.StringBuffer和StringBuilder基本概念 String相关知识 St ...

  6. 300+ Java常见面试题总结【JavaPub版】

    点赞再看,养成习惯 答案解析见文末 我是JavaPub,专注于面试.副业,技术人的成长记录. 这份[Java常见面试题总结]我想准备很久了,前面做面试官,后来自己也面了很多一线二线互联网公司,希望通过 ...

  7. Java常见面试题 Java面试必看 (二)

    Java常见面试题 Java面试必看 (一) 十一.Spring Boot/Spring Cloud 104.什么是 spring boot? Spring Boot 是由 Pivotal 团队提供的 ...

  8. java常见面试题及答案 11-20(JVM)

    11.JVM内存分哪几个区,每个区的作用是什么? java虚拟机主要分为以下一个区: 方法区: 1. 有时候也成为永久代,在该区内很少发生垃圾回收,但是并不代表不发生GC,在这里进行的GC主要是对方法 ...

  9. java常见面试题及答案 1-10(基础篇)

    java常见面试题及答案 1.什么是Java虚拟机?为什么Java被称作是"平台无关的编程语言"? Java 虚拟机是一个可以执行 Java 字节码的虚拟机进程.Java 源文件被 ...

最新文章

  1. 【青少年编程】黄羽恒:我要背单词
  2. 【机器学习基础】通俗易懂无监督学习K-Means聚类算法及代码实践
  3. linux删除目录下文件的几种方法
  4. python计算数组元素个数_python简单获取数组元素个数的方法
  5. java静态成员静态代码块初始化顺序
  6. JavaScript对话框
  7. 【已解决】java int转byte出现负数
  8. 理解Memory Barrier(内存屏障)
  9. PhotoShop介绍
  10. 个性化不和谐帐户的8种方法
  11. 墨羽卿画第二章第5节:另一个世界,腊月廿四
  12. Linux下的搜狗拼音输入法-fcitx sougopinyin
  13. 互联网巨头常用词汇大全 每一个词都在改变世界
  14. 【Unity】判断视频是否播放完毕
  15. 计算机恢复原始桌面图标,如何将电脑界面上的图标恢复到原始样子?
  16. python预测体彩大乐透
  17. fatal error C1010:在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include“stdafx.h“”
  18. chacha20加密c语言算法,Java 11的新加密算法ChaCha20-Poly1305
  19. 推荐一个go写的RTSP转直播工具
  20. (4.2.32)各大热补丁方案分析和比较

热门文章

  1. AidLux+无人机——AI电力巡检新模式
  2. C++毕业设计——基于VC+++BP神经网络+车牌识别的车牌定位和识别系统设计与实现(毕业论文+程序源码)——车牌定位和识别系统
  3. 维京猎人 博客_7款维京游戏将您等到刺客信条瓦尔哈拉
  4. Mac 电脑截屏 不 自动保存 到 桌面问题
  5. CDN+COS搭建图床超详细步骤
  6. SQL Server 2012 安装过程中出现:试图执行未经授权的操作..
  7. 爬虫第三天-------------------------------------笔记(requsets 请求)
  8. excel表格下载,并设置填充色
  9. Python爬虫大师班
  10. 临江仙 送给自己20岁生日