JVM第三讲 JVM从底层原理分析类加载过程
2023-09-11 14:16:28 时间
类加载运行全过程
其中loadClass的类加载过程有如下几步:
加载 >> 验证 >> 准备 >> 解析 >> 初始化 >> 使用 >> 卸载
- 加载:在硬盘上查找并通过IO读入字节码文件,使用到类时才会加载,例如调用类的main()方法,new对象等等,在加载阶段会在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据的访问入口
- 验证:校验字节码文件的正确性
- 准备:给类的静态变量分配内存,并赋予默认值
- 解析:将符号引用替换为直接引用,该阶段会把一些静态方法(符号引用,比如main()方法)替换为指向数据所存内存的指针或句柄等(直接引用),这是所谓的静态链接过程(类加载期间完成),动态链接是在程序运行期间完成的将符号引用替换为直接引用
- 初始化:对类的静态变量初始化为指定的值,执行静态代码块
类被加载到方法区中后主要包含 运行时常量池、类型信息、字段信息、方法信息、类加载器的引用、对应class实例的引用 等信息。
类加载器在加载类信息放到方法区中后,会创建一个对应的Class 类型的对象实例放到堆(Heap)中, 作为开发人员访问方法区中类定义的入口和切入点。
类加载过程:
1:先执行static 方法块
2:执行构造方法
3:生成类对象
相关文章
- JVM内存结构
- Java虚拟机详解01----初识JVM
- [转]深入JVM锁机制1-synchronized
- cacti监控jvm
- JVM类加载原理学习笔记
- 从jvm指令分析i++和++i的区别
- JVM辅助信息参数设置
- JVM加载class文件的原理简述
- Arthas原理系列(一):利用JVM的attach机制实现一个极简的watch命令
- paip.提升性能----jvm参数调整.txt
- elasticsearch控制台中文乱码和jvm内存大小调整。 解决办法:
- 【Java】《深入理解JVM字节码》读书笔记
- 【JVM】如果你想学好 Java,怎么可以不懂 JVM 字节码指令集呢?看完这篇文章你将深入理解Java背后的原理
- JVM 中的 GC Roots 和可达链
- Java JVM 动态方法调用指令 invokedynamic 实现分析(以 Lambda 表达式实现原理为例)...
- 【Android 插件化】插件化原理 ( JVM 内存数据 | 类加载流程 )
- 【深入JVM内核—原理、诊断与优化】第2期开课了
- 【jvm优化】线上JVM调优实践
- 【jvm】JVM(三)JVM 垃圾回收算法详解(CMS、三色标记)
- JVM指令手册
- arthas jvm相关命令使用示例:sysenv、getstatic、vmoption、ognl