Java类加载机制详解【java面试题】

  (1)问题分析:

  Class文件由类装载器装载后,在JVM中将形成一份描述Class结构的元信息对象,通过该元信息对象可以获知Class的结构信息:如构造函数,属性和方法等,Java允许用户借由这个Class相关的元信息对象间接调用Class对象的功能。

  虚拟机把描述类的数据从class文件加载到内存,并对数据进行校验,转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。

  (2)核心答案讲解:

  类装载器就是寻找类的字节码文件,并构造出类在JVM内部表示的对象组件。在Java中,类装载器把一个类装入JVM中,要经过以下步骤:

  1)装载:查找和导入Class文件;

  2)链接:把类的二进制数据合并到JRE中;

  A)校验:检查载入Class文件数据的正确性;

  B)准备:给类的静态变量分配存储空间;

  C)解析:将符号引用转成直接引用;

  3)初始化:对类的静态变量,静态代码块执行初始化操作

  Java程序可以动态扩展是由运行期动态加载和动态链接实现的;比如:如果编写一个使用接口的应用程序,可以等到运行时再指定其实际的实现(多态),解析过程有时候还可以在初始化之后执行;比如:动态绑定(多态)。

  (3)问题扩展

  由于Java的跨平台性,经过编译的Java源程序并不是一个可执行程序,而是一个或多个类文件。当Java程序需要使用某个类时,JVM会确保这个类已经被加载、连接(验证、准备和解析)和初始化。类的加载是指把类的.class文件中的数据读入到内存中,通常是创建一个字节数组读入.class文件,然后产生与所加载类对应的Class对象。加载完成后,Class对象还不完整,所以此时的类还不可用。当类被加载后就进入连接阶段,这一阶段包括验证、准备(为静态变量分配内存并设置默认的初始值)和解析(将符号引用替换为直接引用)三个步骤。最后JVM对类进行初始化,包括:

  1)如果类存在直接的父类并且这个类还没有被初始化,那么就先初始化父类;

  2)如果类中存在初始化语句,就依次执行这些初始化语句。

  类的加载是由类加载器完成的,类加载器包括:根加载器(BootStrap)、扩展加载器(Extension)、系统加载器(System)和用户自定义类加载器(java.lang.ClassLoader的子类)。

Java类加载机制详解【java面试题】相关推荐

  1. Java 类加载机制详解

    一.类加载器 类加载器(ClassLoader),顾名思义,即加载类的东西.在我们使用一个类之前,JVM需要先将该类的字节码文件(.class文件)从磁盘.网络或其他来源加载到内存中,并对字节码进行解 ...

  2. Java基础学习总结(115)——Java 类加载机制详解

    一.类加载器 类加载器(ClassLoader),顾名思义,即加载类的东西.在我们使用一个类之前,JVM需要先将该类的字节码文件(.class文件)从磁盘.网络或其他来源加载到内存中,并对字节码进行解 ...

  3. Java虚拟机中类加载机制详解

    Java虚拟机中类加载机制详解 1,什么是java类加载机制 **首先在java中,是通过编译来生成.class文件(可能在本地,或者网页下载),java的类加载机制就是 将这些.class文件加载到 ...

  4. java异常处理机制详解

    java异常处理机制详解 参考文章: (1)java异常处理机制详解 (2)https://www.cnblogs.com/vaejava/articles/6668809.html 备忘一下.

  5. Java SPI机制详解

    Java SPI机制详解 1.什么是SPI? 2.SPI的用途 Driver实现 Mysql DriverManager实现 spi工具类`ServiceLoader` 将自己注册到驱动管理器的驱动列 ...

  6. 【胖虎的逆向之路】01——动态加载和类加载机制详解

    胖虎的逆向之路 01--动态加载和类加载机制详解 一.前言 二.类的加载器 1. 双亲委派模式 2. Android 中的类加载机制 1)Android 基本类的预加载 2)Android类加载器层级 ...

  7. Java虚拟机:类加载机制详解

    版权声明:本文为博主原创文章,转载请注明出处,欢迎交流学习! 大家知道,我们的Java程序被编译器编译成class文件,在class文件中描述的各种信息,最终都需要加载到虚拟机内存才能运行和使用,那么 ...

  8. java里加载是什么意思_Java 类加载机制详解

    什么是 Java 类加载机制? Java 虚拟机一般使用 Java 类的流程为:首先将开发者编写的 Java 源代码(.java文件)编译成 Java 字节码(.class文件),然后类加载器会读取这 ...

  9. java 反射机制详解

    火星十一郎 海纳百川, 有容乃大,QQ:791909235,Tel:13137910179 posts - 774, comments - 556, trackbacks - 0, articles ...

最新文章

  1. 【MATLAB】矩阵信息的获取
  2. iOS官方Sample大全
  3. Asp.net core中Migration工具使用的交流分享
  4. 算法有偏见?总比人类识别强吧!
  5. python中cmd全称_【转】Python中执行cmd的三种方式
  6. 美团王兴:24岁创业39岁迎来上市,越对未来有信心,越对当下有耐心
  7. 国外游戏开发商吐槽:开发VR游戏付账单的钱都赚不到
  8. (转)Managed DirectX +C# 开发(入门篇)(三)
  9. (一) js + Vue 写扫雷
  10. centos6.6安装中文支持
  11. linux oracle 分号引起大错误
  12. 驱动实验一(第一个驱动程序创建)
  13. cisco sla 简单配置
  14. 代码的坏味道之二十一 :Refused Bequest(被拒绝的遗贈)
  15. EDA学习1.3之开关的封装
  16. iPhone 重大缺陷 存储空间耗尽后无法正常开机
  17. 13、Nepxion Discovery 之 全链路调用链监控
  18. python中exec是什么意思_Python中的exec()
  19. java生成word 带表格_【java】Freemarker 动态生成word(带图片表格)
  20. matlab: strcat用法

热门文章

  1. 分享:用promise封装ajax
  2. Webhint开源了一种代码检查工具
  3. 端到端对话模型新突破!Facebook发布大规模个性化对话数据库
  4. ABP理论学习之数据传输对象(DTO)
  5. keepalived and heartbeat
  6. 小型网站到大型网站-Mysql优化
  7. Java数据结构与算法(第四章栈和队列)
  8. Github的Tom大鸟:我是如何拒绝微软30w的诱惑,专注于Github事业
  9. Windows Phone实用开发技巧(32):照片角度处理
  10. as3自定义加载图片类