JVM面试 类加载机制

article/2025/9/22 4:01:24

JVM的类加载机制


一、JVM的运行机制

JVM 是用于运行Java字节码的虚拟机,包括一套字节码指令集,一组程序寄存器,一个虚拟机栈,一个虚拟机堆,一个方法区和一个垃圾回收器。JVM运行在操作系统之上,不与硬件设备直接交互;
Java程序具体运行过程:

  1. JAVA源文件被编译器编译成字节码文件
  2. JVM将字节码文件编译成相应操作系统的机器码
  3. 机器码调用相应操作系统的本地方法库执行相应的方法
    在这里插入图片描述

二、JVM的类加载机制

1.JVM的类加载阶段

  1. 加载
  2. 验证
  3. 准备
  4. 解析
  5. 初始化

在类初始化完成后就可以使用该类的信息,不用则从JVM卸载;

2.类加载器

JVM提供三种类加载器

  • 启动类加载器
  • 扩展类加载器
  • 应用程序类加载器
  • 除了上面三种,还可以继承java.lang.ClassLoader实现自己定义的类加载器

3. 双亲委派机制

简单说:儿子找爸爸,爸爸找爷爷
*所有的类都会委派到类加载器*

  1. 启动类加载器— %JAVA_HOME/lib路径下的jar包

  2. 扩展类加载器—%JAVA_HOMEjre/lib/ext路径下的jar包

  3. 应用程序类加载器—在CLASSPATH路径下指定

  4. 自定义的类加载器—加载用户自定义目录下的Class文件

双亲委派机制的核心就是保障类的唯一性和安全性(唯一:无论是那个类加载器加载类,最后都交给启动器类加载器加载;安全性:JVM不允许存在相同包名跟类名)



http://chatgpt.dhexx.cn/article/1AxTaQGA.shtml

相关文章

JVM--详解类加载机制

JVM--详解类加载机制 转载:https://blog.csdn.net/championhengyi/article/details/78680700 Java虚拟机的体系结构 前面我们探讨了Class文件的结构,如果你还没有学习,将不利于这部分知识的吸收与掌握,所以请移步:JV…

JVM类加载机制

文章目录 概述1. 类加载器2.类加载过程3.双亲委派机制总结 概述 Class文件由类装载器装载后,在JVM中将形成一份描述Class结构的元信息对象,通过该元信息对象可以获知Class的结构信息:如构造函数,属性和方法等,Java允许…

JVM:类加载机制

类加载器 什么是类加载器 ​ 类加载器的作用负责从磁盘中或者网络中加载class文件,classloader只负责加载class文件,类加载器通过一个类的全限定名来获取描述此类的二进制字节流。类加载器虽然用于实现加载动作,但它在Java程序中起到的作用…

JVM类的加载机制

1 类的加载机制 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。类的加载的最终产品是位于堆区中的Class对象&#xf…

jvm之java类加载机制和类加载器(ClassLoader)的详解

手把手写代码:三小时急速入门springboot—企业级微博项目实战--->csdn学院 当程序主动使用某个类时,如果该类还未被加载到内存中,则JVM会通过加载、连接、初始化3个步骤来对该类进行初始化。如果没有意外,JVM将会连续完成3个步…

二叉树的遍历

遍历一棵二叉树有很多种方法。假如用D、L、R分别代表二叉树的根结点、左子树、右子树,那么要遍历这棵二叉树,方法就有6种:DLR、DRL、LDR、LRD、RDL、RLD。一般在遍历时遵循先左后右的原则,因此常用的遍历方法有三种:DL…

二叉树的遍历详解

概述 二叉树的遍历是一个很常见的问题。二叉树的遍历方式主要有:先序遍历、中序遍历、后序遍历、层次遍历。先序、中序、后序其实指的是访问父节点的次序。在遍历过程中,若访问顺序是父节点-左孩子节点-右孩子节点,就是先序遍历,…

“二叉树遍历“详解 以及 二叉树的实现

目录 一.二叉树的遍历 1.二叉树的遍历的解释: 2.二叉树的遍历有三种递归结构 (1) 实现先序遍历: (2) 实现中序遍历: (3) 实现后序遍历: (4) 二叉树的层序遍历 层序遍历代码: 二.二叉树的递归实现相关函数讲解…

二叉树遍历详解

二叉树的遍历方式是最基本,也是最重要的一类题目,我们将从「前序」、「中序」、「后序」、「层序」四种遍历方式出发,总结他们的递归和迭代解法。 一、二叉树定义 二叉树(Binary tree)是树形结构的一个重要类型…

讲透学烂二叉树(三):二叉树的遍历图解算法步骤及JS代码

二叉树的遍历是指不重复地访问二叉树中所有结点,主要指非空二叉树,对于空二叉树则结束返回。 二叉树的遍历分为 深度优先遍历 先序遍历:根节点->左子树->右子树(根左右),有的叫:前序遍历…

二叉树的中序遍历算法(Java三种实现方法)

文章目录 题目一、二叉树的节点定义二、三种遍历方法1.递归算法思想 2.迭代算法思想 3.Morris 中序遍历算法思想 总结 题目 给定一个二叉树的根节点 root ,返回它的 中序 遍历 一、二叉树的节点定义 public class TreeNode {int val;TreeNode left;TreeNode righ…

二叉树遍历的几种常见方法

二叉树的遍历方法 一.二叉树分类: 完全二叉树满二叉树扩充二叉树平衡二叉树 二.二叉树的四种遍历方式: 前序遍历(先根,再左,最后右)中序遍历(先左,再根,最后右&#…

二叉树的三种遍历方式

目录 1.二叉树的结构: 2.二叉树的前序遍历: 3.二叉树的中序遍历: 4.二叉树的后序遍历: 5.二叉树前、中、后序的代码实现: 前序遍历函数: 中序遍历函数: 后序遍历: 完整代码&am…

图解二叉树的三种遍历

1、二叉树的遍历 前序遍历:根结点 —> 左子树 —> 右子树 中序遍历:左子树—> 根结点 —> 右子树 后序遍历:左子树 —> 右子树 —> 根结点 层次遍历:仅仅需按层次遍历就可以 前序遍历:1 2 4 5 7…

二叉树的遍历【 详细讲解 】

二叉树的遍历 一共有4种遍历 先看图,对于这个图进行4种遍历的讲解 1、 先序遍历 定义:若二叉树为空,则空操作;否则 (1)访问根节点(2)先序遍历左子树(3&#…

二叉树的创建及遍历方法

目录 1、二叉树的定义及特点 2、满二叉树和完全二叉树的概念 3、二叉树的存储结构 4、创建二叉树 5、树的四种遍历方法 6、结果及其分析 1、二叉树的定义及特点 二叉树是指树中节点的度不大于2的有序树,它是一种最简单且最重要的树。二叉树的递归定义为&#…

二叉树遍历(图解)

二叉树的顺序存储结构就是用一维数组存储二叉树中的节点,并且节点的存储位置,也就是数组的下标要能体现节点之间的逻辑关系。—–>一般只用于完全二叉树 链式存储—–>二叉链表 定义: lchild | data | rchild(两个指针域&…

图解二叉树及二叉树遍历

二叉树及二叉树遍历 完全二叉树二叉树的遍历遍历的性质 1、完全二叉树 对于一棵具有n个节点的二叉树(按层序编号),如果编号为i的节点与同样深度的满二叉树中编号为i的节点在二叉树的位置完全相同,则为完全二叉树。 换句话来说&a…

数据结构--二叉树遍历(详细过程)

目录 一、什么是二叉树? 二、二叉树的遍历 1. 先序遍历 2. 中序遍历 3.后序遍历 4. 遍历的推导 三、重要的事情 一、什么是二叉树? 1. 二叉树:一种树形结构,特点是每个结点至多只有两颗子树,并且子树有左右之分…

图解法:三分钟掌握二叉树的三种遍历

二叉树作为树中的一种特殊存在机制,人们对于它的排序总结出来了三种方式,让我们一起探寻它的魅力吧! 测试对象 1.先序遍历 首先看一下排序规则 先访问根节点 再先序访问左子树 再先序访问右子树 看上面的素材,得知根节点为…