jvm类的加载过程

简介: jvm类的加载过程

   类的生命周期和对象的生命周期的关系是什么呢?(从这里可以看到

   类的加载过程是类的生命周期中的一部分。

   类的生命周期分为5个阶段:加载、连接、初始化、使用、卸载。

   类的加载过程详细分为5个阶段。分别是加载、验证、准备、解析、初始化。

   加载:加载二进制.class文件等。

   验证:对加载的信息进行合法性验证,避免对虚拟机自身造成危害。

   准备:为静态变量分配内存。

   解析:

   初始化:


   从上面也可以看出类加载的第五步是类初始化,也就是说在类初始化之前已经完成了类加载的前面几步。那么    什么时候会进行类初始化呢?只有下面五种:

   1、当new关键字去实例化对象时,读取或设置类的静态变量时,调用一个类的静态方法时。

   2、用反射对类进行反射调用的时候,如果类没有进行过初始化。

   3、初始化一个子类,若它的父类没有进行过初始化,先初始化父类,再初始化子类。

   4、虚拟机启动时,会初始化程序的主类,也就是main方法所在的类。

   5、(这一种目前还没懂)


   类的加载过程基本是在方法区进行的,对象的创建在堆区和栈区,程序运行的状态在程序计数器中。联想一下:spring框架可以管理对象在什么时候创建。

   

   类的加载过程是理论上的,落地的是类加载器。

   //TODO:

   双亲委派模型

   


参考文章:

   (类的加载机制及对象的生命周期)从这篇文章中了解了对象的生命周期和类的生命周期,它们两个的关系。

   《深入理解Java虚拟机》第七章


总结:

   能说出来才是真的明白了,说不出来就是还模糊着呢。


目录
打赏
0
0
0
0
2
分享
相关文章
|
2月前
|
深入理解JVM,包含字节码文件,内存结构,垃圾回收,类的声明周期,类加载器
JVM全称是Java Virtual Machine-Java虚拟机JVM作用:本质上是一个运行在计算机上的程序,职责是运行Java字节码文件,编译为机器码交由计算机运行类的生命周期概述:类的生命周期描述了一个类加载,使用,卸载的整个过类的生命周期阶段:类的声明周期主要分为五个阶段:加载->连接->初始化->使用->卸载,其中连接中分为三个小阶段验证->准备->解析类加载器的定义:JVM提供类加载器给Java程序去获取类和接口字节码数据类加载器的作用:类加载器接受字节码文件。
247 55
Arthas redefine(加载外部的.class文件,redefine到JVM里 )
Arthas redefine(加载外部的.class文件,redefine到JVM里 )
112 15
Arthas sc(查看JVM已加载的类信息 )
Arthas sc(查看JVM已加载的类信息 )
67 9
|
5月前
|
JVM: 内存、类与垃圾
分代收集算法将内存分为新生代和老年代,分别使用不同的垃圾回收算法。新生代对象使用复制算法,老年代对象使用标记-清除或标记-整理算法。
72 6
jvm类常见加载顺序
jvm类常见加载顺序
JVM常见面试题(三):类加载器,双亲委派模型,类装载的执行过程
什么是类加载器,类加载器有哪些;什么是双亲委派模型,JVM为什么采用双亲委派机制,打破双亲委派机制;类装载的执行过程
250 35
JVM常见面试题(三):类加载器,双亲委派模型,类装载的执行过程
JVM加载过程
JVM类加载过程是Java开发中的关键环节,主要包括五个阶段:加载、验证、准备、解析和初始化。加载阶段获取类的二进制字节流;验证确保字节码符合规范;准备为静态变量分配内存并默认初始化;解析将符号引用转为直接引用;初始化执行静态变量赋值和静态代码块。了解这一过程有助于深入理解Java程序运行机制,提升编程水平。
JVM知识体系学习二:ClassLoader 类加载器、类加载器层次、类过载过程之双亲委派机制、类加载范围、自定义类加载器、编译器、懒加载模式、打破双亲委派机制
这篇文章详细介绍了JVM中ClassLoader的工作原理,包括类加载器的层次结构、双亲委派机制、类加载过程、自定义类加载器的实现,以及如何打破双亲委派机制来实现热部署等功能。
393 3
JVM知识体系学习一:JVM了解基础、java编译后class文件的类结构详解,class分析工具 javap 和 jclasslib 的使用
这篇文章是关于JVM基础知识的介绍,包括JVM的跨平台和跨语言特性、Class文件格式的详细解析,以及如何使用javap和jclasslib工具来分析Class文件。
153 0
JVM知识体系学习一:JVM了解基础、java编译后class文件的类结构详解,class分析工具 javap 和 jclasslib 的使用
Java健壮性 Java可移植性 JDK, JRE, JVM三者关系 Java的加载与执行原理 javac编译与JAVA_HOME环境变量介绍 Java中的注释与缩进 main方法的args参数
Java健壮性 Java可移植性 JDK, JRE, JVM三者关系 Java的加载与执行原理 javac编译与JAVA_HOME环境变量介绍 Java中的注释与缩进 main方法的args参数
118 1
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问