编译时 VS 运行时
编译时将 Java 源文件编译成 字节码 Class文件。
运行时将对 Class 文件进行类加载。
类加载就是指 虚拟机 加载 Class 文件到内存的过程。
该过程包括
1. 对数据的校验
2. 转换解析
3. 初始化
关于动态加载, 是指运行期再指定其具体的实现。 比如在使用接口的时候,到运行时采取指定其具体的实现。
----------------------------- 我是分割线 -----------------------------
类的生命周期
1. 加载
2. 验证 (连接)
3. 准备 (连接)
4. 解析 (连接)
5. 初始化
6. 使用
7. 卸载
加载-
1. 通过类的权限定名 com/vrplat/Test 加载类的二进制流
2. 将二进制流结构转换成方法区的数据结构 (不同的JVM不同的实现)
3. 在堆中生成一个Class对象
验证-
1. 文件格式验证 (开头的魔术,版本号,编码等等。。)
2. 元数据验证 (语义分析, 比如是否继承了一个final的类, 是否重写了final的方法)
3. 字节码验证 (比如,类型转化,父类强制转化成子类验证就会出错)
4. 符号引用验证 (比如:通过权限定名能否找到类,当前类对其他类/字段/方法的访问性private/protected/public/default)
准备-
1. 就是给类变量(静态变量)分配内存并设置零值的过程。
2. 比如: public static int value = 123; 准备过程就是在方法区给value分配内存并将其赋零值0. 而真正的值123要等到初始化的时候才确定。
解析-
1. 将符号引用替换成直接引用
2. 符号引用在验证阶段只是确定能否找到该类,或者说是Class文件。而将它替换成直接引用之后则是可以直接在内存中访问到。
需要初始化的几种场景
1. 虚拟机启动的时候,要初始化一个可执行的类(包括main方法的那个类)
2. 当碰到new, getstatic, putstatic, invokestatic字节码指令的时候, 如果类没有初始化则要先初始化 (读取直接静态字段-非父类的字段,final常量在编译期间就已经初始化好了,不在此内)
3. 当初始化一个类时发现父类还没有初始化,则要先初始化父类。 而对于接口来说,只有当真正使用到父接口(比如引用父接口的常量)才会对父接口的初始化
4. 使用反射的时候
分享到:
相关推荐
总结,JVM 类加载机制是Java平台的核心特性之一,它确保了程序的稳定运行和动态扩展能力。理解类加载器的工作原理和双亲委派模型对于优化程序性能、解决类冲突以及构建复杂的模块化系统至关重要。在实际开发中,掌握...
### JVM实战-JVM类加载机制案例分析 #### 实验背景与目标 本次实验的主要目的是深入理解Java虚拟机(JVM)中的类加载机制。通过实践操作,掌握类的加载、连接与初始化过程,了解不同类型的类加载器及其工作原理,...
Java虚拟机(JVM)是Java程序运行的基础,它的类加载机制是理解Java应用程序如何启动和执行的关键部分。本文将深入JDK源码,详细解析JVM类加载机制的各个环节,帮助开发者更好地理解和优化自己的代码。 类加载机制...
在Java开发中,JVM(Java虚拟机)的类加载机制是至关重要的,因为它负责将类的字节码转换为运行时的实例。本专题"性能调优专题-jvm类加载机制-performance-jvmclassloader"深入探讨了如何通过理解并优化类加载过程来...
Java虚拟机(JVM)的类加载机制是Java运行时环境的重要组成部分,它负责将类的字节码文件加载到内存中,进行一系列处理并使其成为可执行的Java类型。这个过程包括五个主要阶段:加载、验证、准备、解析和初始化。 1...
JVM的类加载机制是Java程序运行的基础,它包括加载、验证、准备、解析和初始化等阶段。通过理解类加载机制,我们可以更好地管理类的生命周期,实现动态加载和卸载类,以及优化程序的性能。随着Java技术的不断发展,...
锁以及jvm类加载机制
JVM的类加载机制是JVM的核心机制之一,它把描述类的数据从class文件加载到内存,并对数据进行校验、转换解析和初识化,形成可以被虚拟机直接使用的Java类型。 Java代码执行流程是JVM的核心流程之一,它首先通过...
类缓存的主要问题在于,如果JVM加载了同名的类,会出现类冲突问题。解决类缓存问题的方法有多种,例如使用不同的类加载器加载同名的类,或者使用不同的命名空间来避免类冲突。 在JVM中,类加载器会将类加载到内存中...
"Jvm类加载机制详解" Jvm类加载机制是Java虚拟机(JVM)中一个非常重要的机制,它负责将编译后的Java类文件加载到JVM中,并对其进行验证、准备、解析、初始化和卸载等操作。 类加载机制的生命周期可以分为五个阶段...
JVM类加载机制是Java虚拟机运行时加载类的核心过程,它负责将.java编译后的字节码文件(.class)转换为内存中的类实例。本文详细阐述了这个机制,包括其工作流程、特点以及如何自定义类加载器。 首先,我们来看一下...
了解类加载机制对于解决这类问题至关重要,同时也有助于深入理解Java虚拟机(JVM)的工作原理。 Java 类加载机制主要由类加载器完成。JVM内置了三种预定义的类加载器: 1. **启动类加载器(Bootstrap ClassLoader...
JVM类加载机制原理及用法解析 JVM类加载机制是Java虚拟机的一个核心机制,它负责将Java类从.class文件加载到内存中,并对其进行链接、初始化等操作。在Java中,类加载机制是一个非常重要的机制,它直接关系到Java...
jvm的类加载机制详解
Java虚拟机(JVM)是Java程序运行的核心,而类加载机制则是JVM实现程序动态加载和执行的关键部分。在深入理解Java虚拟机的工作原理时,类加载机制是一个不可忽视的重要知识点。这篇博客将探讨JVM如何加载、连接和...
Java类加载机制是Java程序运行的第一步,它对于理解Java虚拟机(JVM)的行为至关重要。类加载过程涉及到类的加载、链接(验证、准备、解析)、初始化等阶段,并且这一过程是由类加载器系统完成的。 #### 二、类加载...
JVM类加载机制详解 JVM类加载机制是Java虚拟机中的一种机制,它负责加载Java类文件到内存中,以便执行Java程序。类加载机制分为五个阶段:加载、验证、准备、解析和初始化。 加载 加载是类加载过程中的一个阶段,...
通过对JVM执行子系统原理的深入分析,我们不仅了解了Class文件的具体结构和字节码指令的基本概念,还探讨了类加载机制的各个环节以及字节码执行引擎的核心组成部分。这些知识点对于深入理解JVM的工作原理、优化程序...
《JAVA-JVM-01类加载机制》 Java虚拟机(JVM)是Java程序运行的基础,其中类加载机制是其核心组成部分。本文将深入剖析Java中的类加载器和双亲委派机制,并通过示例讲解如何自定义类加载器。 类加载过程是Java程序...