JVM加载class文件的原理机制

JVM中类的装载是由类加载器(ClassLoader)和它的子类来实现的,Java中的类加载器是一个重要的Java运行时系统组件,它负责在运行时查找和装入类文件中的类。
由于Java的跨平台性,经过编译的Java源程序并不是一个可执行程序,而是一个或多个类文件。当Java程序需要使用某个类时,JVM会确保这个类已经被加载、连接(验证、准备和解析)和初始化。类的加载是指把类的.class文件中的数据读入到内存中,通常是创建一个字节数组读入.class文件,然后产生与所加载类对应的Class对象。加载完成后,Class对象还不完整,所以此时的类还不可用。当类被加载后就进入连接阶段,这一阶段包括验证、准备(为静态变量分配内存并设置默认的初始值)和解析(将符号引用替换为直接引用)三个步骤。最后JVM对类进行初始化,包括:1)如果类存在直接的父类并且这个类还没有被初始化,那么就先初始化父类;2)如果类中存在初始化语句,就依次执行这些初始化语句。
类的加载是由类加载器完成的,类加载器包括:根加载器(BootStrap)、扩展加载器(Extension)、系统加载器(System)和用户自定义类加载器(java.lang.ClassLoader的子类)。从Java 2(JDK 1.2)开始,类加载过程采取了父亲委托机制(PDM)。PDM更好的保证了Java平台的安全性,在该机制中,JVM自带的Bootstrap是根加载器,其他的加载器都有且仅有一个父类加载器。类的加载首先请求父类加载器加载,父类加载器无能为力时才由其子类加载器自行加载。JVM不会向Java程序提供对Bootstrap的引用。

本题涉及java知识点分析

Java虚拟机JVM

JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。
JVM主要是通过在实际计算机模仿各种计算机功能来实现的,组成部分包括堆、方法区、栈、本地方法栈、程序计算器等部分组成的,其中方法回收堆和方法区是共享区,也就是谁都可以使用,而栈和程序计算器、本地方法栈区是归JVM的。Java能够被称为“一次编译,到处运行”的原因就是Java屏蔽了很多的操作系统平台相关信息,使得Java只需要生成在JVM虚拟机运行的目标代码也就是所说的字节码,就可以在多种平台运行。

类装载器(ClassLoader)

类装载器(ClassLoader)主要负责加载class文件,是否能执行主要取决于execution engine它是负责执行被加载类中包含的指令。有两种类加载器分别为启动类加载器和用户自定义类加载器,然而启动类加载器是JVM实现的一部分,用户自定义类加载器是Java程序一部分。

希望能对大家有所帮助。

常见Java面试题之JVM加载class文件的原理机制相关推荐

  1. java文件读入原理_描述一下JVM加载class文件的原理机制

    1.JVM 简介 JVM 是我们Javaer 的最基本功底了,刚开始学Java 的时候,一般都是从"Hello World "开始的,然后会写个复杂点class ,然后再找一些开源 ...

  2. Java提高篇——JVM加载class文件的原理机制

    阅读目录 1.JVM 简介 2.JVM 的组成部分 3.JVM加载class文件的原理机制 在面试java工程师的时候,这道题经常被问到,故需特别注意. 回到顶部 1.JVM 简介 JVM 是我们Ja ...

  3. J2EE JVM加载class文件的原理机制

    JVM加载class文件的原理机制 1.Java中的所有类,必须被装载到jvm中才能运行,这个装载工作是由jvm中的类装载器完成的,类装载器所做的工作实质是把类文件从硬盘读取到内存中 2.java中的 ...

  4. JVM加载class文件的原理机制

    阅读目录 1.JVM 简介 2.JVM 的组成部分 3.JVM加载class文件的原理机制 在面试java工程师的时候,这道题经常被问到,故需特别注意. 回到顶部 1.JVM 简介 JVM 是我们Ja ...

  5. 描述一下JVM加载class文件的原理机制

    Java中的所有类,都需要由类加载器装载到JVM中才能运行.类加载器本身也是一个类,而它的工作就是把class文件从硬盘读取到内存中.在写程序的时候,我们几乎不需要关心类的加载,因为这些都是隐式装载的 ...

  6. 面试常备题---JVM加载class文件的原理机制

    在面试java工程师的时候,这道题经常被问到,故需特别注意. Java中的所有类,都需要由类加载器装载到JVM中才能运行.类加载器本身也是一个类,而它的工作就是把class文件从硬盘读取到内存中.在写 ...

  7. Java - 描述一下JVM加载class文件的原理机制

    分享一个大牛的人工智能教程.零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请点击http://www.captainbed.net JVM中类的装载是由类加载器(ClassLoader ...

  8. java虚拟机及加载class文件的原理机制

    2019独角兽企业重金招聘Python工程师标准>>> (点击获取更多资料的下载) java 虚拟机 ‎2007‎年‎4‎月‎23‎日,‏‎14:18:00 | chenweicai ...

  9. JVM加载class文件的原理简述

    JVM中类的装载是由ClassLoader和它的子类来实现的,Java ClassLoader 是一个重要的Java运行时系统组件.它负责在运行时查找和装入类文件的类. Java中的所有类,都需要由类 ...

最新文章

  1. 借条的注意事项,上面不能有这3个字
  2. VCTransitionsLibrary –自定义iOS交互式转场动画的库
  3. 2_指令集、体系架构、微架构
  4. Rancher 2.0 里程碑版本:支持添加自定义节点!
  5. Linux流量监控工具 – iftop
  6. 算法高级(36)-如何利用并行提高算法的执行效率?
  7. 实战 | Vue + Element UI 页面创建
  8. 轻量服务器怎么进信息库,轻量服务器怎么上传数据库
  9. 内存溢出和内存泄漏的区别,产生原因以及解决方案
  10. oracle在指定列后添加列,oracle添加列到指定位置
  11. PAT乙级 1032 挖掘机技术哪家强 (20 分)
  12. html之页面元素印射
  13. Xmind 2022精彩体验---什么叫流程图
  14. PLC编程入门基础知识
  15. opencv安装教程
  16. 计算机控制教师端,摆脱学校机房教师端控制的方法汇总
  17. 穿越沙漠问题c语言算法,沙漠穿越问题_c语言课程设计(9页)-原创力文档
  18. 四六级分数根据比例给分
  19. 用户运营 - 活跃度分析
  20. python如何获取图片的尺寸大小_Python获取图片的大小/尺寸

热门文章

  1. Linux中添加pycharm源,linux下python+pycharm安装
  2. [tomcat]-tomcat8启动时SessionIdGeneratorBase.createSecureRandom耗时
  3. C++中数字与字符串之间的转换 scanf string总结(复习必读)
  4. Django中自定义过滤器的使用
  5. Docker 学习应用篇之一: 初识Docker
  6. [课程设计]Scrum 2.5 多鱼点餐系统开发进度(下单一览页面-菜式添加框架设计)
  7. 排序算法之递归算法(归并排序)
  8. 探索ArrayList自动改变size真相
  9. 【转】DataGridView新特色(vs2005)
  10. 用触发器实现SQLite的外键约束