1、ClassLoader的层级结构。双亲-孩子结构。
启动类ClassLoader <- 系统类ClassLoader <- 自定义ClassLoader。
ClassLoader加载class时首先请求其双亲ClassLoader加载,递归至双亲孩子链顶层即启动类ClassLoader,如果双亲ClassLoader已经加载了该类,则自己不会再加载类,只有当双亲ClassLoader没有加载该类时,才会自己去加载该类。
2、class文件的校验
虚拟机会校验加载的class文件,分为四个阶段:
(1)class文件的结构检查。保证class文件是规定的class文件格式。
所有的class文件都以0xCAFEBABE开头,同时还要检查class的主版本号和次版本号,确定是否在JVM支持的范围之内。校验class的文件长度等。
(2)class文件语义检查。确保语法的正确性。java编译器在将将.java文件编译为.class文件时也会做同样的事情,但JVM并不知道该文件是否是有没有缺陷的java编译器编译而来的。
(3)字节码验证。字节码流实际上就是类里面的方法。校验指令序列是否安全。
字节码流代表java方法,每个线程执行的时候,jvm会为其分配一个java栈,该线程中每个方法调用都会产生一个该方法的一个栈帧,栈帧中存放方法栈和操作数栈。操作数栈存储的是方法计算过程中的中间结果,方法栈中存放的是方法的局部变量。
(4)
符号引用验证。验证class文件到其他的class文件的引用是正确的。
由于大多数JVM实现采用延迟加载的策略,因此第四趟扫描有可能是在第三趟扫描之后,字节码真正执行的时候进行的。
分享到:
相关推荐
《深入理解JVM & G1 GC》一书深入剖析了Java虚拟机(JVM)的工作原理,特别是针对垃圾收集器(GC)中的G1(Garbage-First)算法进行了详尽的探讨。JVM是Java程序运行的基础,它负责解析、编译、执行Java代码,并管理...
Java虚拟机(JVM)是运行Java程序的关键平台,其内部结构和内存管理机制非常复杂且精细。它将内存分为若干个不同的数据区域,以便管理Java程序的运行时数据。下面将详细介绍JVM中的运行时数据区,以及Java内存模型...
资源名称:深入理解JVM & G1 GC内容简介:G1 GC提出了不确定性Region,每个空闲Region不是为某个固定年代准备的,它是灵活的,需求驱动的,所以G1 GC代表了先进性。《深入理解JVM & G1 GC》主要为学习Java语言的...
1. JVM架构组成:JVM主要由类加载器(Class Loader)、运行时数据区(Runtime Data Area)、执行引擎(Execution Engine)以及本地接口(Native Interface)等部分组成。了解这些组件各自的作用和工作方式,是理解...
《深入理解JVM & G1 GC》这篇文章和相关压缩包文件主要聚焦于Java虚拟机(JVM)的内存管理,特别是垃圾收集器(GC)的优化,特别是G1(Garbage-First)垃圾收集器的深度解析。下面将详细阐述JVM、GC的基本概念,...
每个使用Java的开发者都知道Java字节码是在JRE中运行,而JVM则是JRE中的核心组成部分,承担分析和执行Java字节码的工作,而Java程序员通常并不需要深入了解JVM运行情况就可以开发出大型应用和类库。尽管如此,如果你...
《JVM规范与深入理解》这个主题涵盖了Java虚拟机(Java Virtual Machine)的全面解析,旨在帮助开发者深入了解JVM的工作原理及其对程序性能的影响。在这个主题中,我们主要关注两个核心资源:周志明的《深入理解Java...
[jvm]深入JVM(一):从"abc"=="abc"看java的连接过程收藏 一般说来,我不关注java底层的东西,这次是一个朋友问到了,注意不光是 System.out.println("abc"=="abc");返回true, System.out.println(("a"+"b"+"c")....
深入解析jvm深入解析jvm深入解析jvm深入解析jvm深入解析jvm深入解析jvm
《深入JVM内核—原理、诊断与优化》是一份深度探索Java虚拟机(JVM)的视频教程,旨在帮助开发者全面理解JVM的工作机制,掌握性能诊断技巧,并能进行有效的优化。本教程覆盖了从基础到高级的JVM主题,不仅适用于Java...
JVM 深入分析,简介,学习,面试必备,很深入,全方位介绍
《深入理解Java虚拟机JVM高级特性与最佳实践》是一本专注于Java开发人员提升技术水平的著作,由周志明撰写。这本书旨在填补Java技术体系中关于Java虚拟机(JVM)知识的空白,帮助读者深入理解JVM的工作原理及其对...
### 深入JVM内核:原理、诊断与优化 #### 一、JVM基础知识 **1.1 JVM概念** Java虚拟机(Java Virtual Machine,简称JVM)是一种用于执行Java字节码的虚拟机。它为Java程序提供了一个运行环境,能够独立于硬件平台...
深入理解JVM的内核原理、诊断技巧以及优化方法对于提升应用性能至关重要。本教程——“深入JVM内核—原理、诊断与优化视频教程”,将重点讲解这些关键点,帮助开发者提升技术水平,更好地解决实际问题。 首先,我们...
本书讲述了Java虚拟机一运行 所有Java程序的抽象计算机,还讲了几种与虚拟机密切相关的核心Java API。本书通过分析讲解、可运行的示例、参考资料和applet (它作为文中所述概念的交互式例示),提供了Java技术的深人...
1. 类加载机制:JVM采用双亲委派模型进行类加载,当一个类被请求加载时,首先会询问其父类加载器,只有当父类加载器无法完成加载时,才会尝试自己加载。这种机制避免了类的重复加载,同时也保证了核心类库的加载安全...
深入理解JVM,首先要明白Java技术的组成部分,包括Java编程语言、Java类文件格式、Java虚拟机(JVM)和Java应用程序接口(Java API)。这些组件共同构成了Java平台,使得Java程序能够实现跨平台运行。 Java虚拟机是...
JAVA应用JVM原理及参数调优深入讲解视频.1 JAVA应用JVM原理及参数调优深入讲解视频.2 JAVA应用JVM原理及参数调优深入讲解视频.3 JAVA应用JVM原理及参数调优深入讲解视频.4 JAVA应用JVM原理及参数调优深入讲解视频.5 ...
### 深入理解JVM #### 一、Java技术与Java虚拟机 Java不仅仅是一种编程语言,更是一项综合性的技术。它主要包括四个关键组成部分: 1. **Java编程语言**:这是一种面向对象的编程语言,提供了丰富的类库支持,...