JVM知识之基础篇

虚拟机概述

VM(Virtual Machine) 是一款虚拟的计算机,是一款用来执行一系列的计算机指令的软件。大体上可分为程序虚拟机和系统虚拟机。

系统虚拟机是对物理计算机的完全仿真,可以提供完整可运行操作系统的软件平台,著名的VMware就是系统虚拟机。

程序虚拟机,JVM就是一款程序虚拟机,专门为执行某个计算机程序而设计,在Java虚拟机中执行的指令我们称之为java字节码指令。

JVM作用

1、将字节码文件加载到内存中(运行时数据区)并保存

2、将字节码文件编译成为可执行文件并执行

3、垃圾回收

JVM组成部分

1、类加载器

2、运行时数据区(堆、方法区、本地方法栈、虚拟机栈、程序计数器)

3、本地方法接口

4、垃圾回收器

JVM 类加载器

类加载子系统 

类加载子系统是Java虚拟机(JVM)的一部分,负责加载、连接和初始化Java类。它是Java程序运行的基础,确保在需要使用类时能够正确加载并执行。

类加载子系统具有以下特点:

  • 委托模型:类加载子系统采用了双亲委派模型,即当一个类加载器接收到类加载请求时,它会先将加载请求委派给父加载器处理,只有在父加载器无法找到类时,才会尝试自己加载。

  • 缓存机制:类加载子系统会缓存已加载的类,避免重复加载相同的类,提高性能和节省内存。

  • 动态加载:除了初始加载外,类加载子系统还支持动态加载类。通过使用反射、类加载器等机制,可以在运行时动态地加载和使用类。

类加载过程

加载-->验证-->准备-->解析-->初始化-->使用-->销毁

加载

1、将字节码文件的二进制数据加载到内存中。

2、生成代表该类的Class对象。

链接

验证:验证字节码文件的格式和语义是否符合虚拟机的规范。

准备:为静态变量分配内存空间,并赋予初始值(此处为类型的默认值,如int默认值为0)。

解析:将类的符号引用转化为直接引用,使得各个类之间能够正确地相互引用。

初始化

初始化阶段是类加载的最后一步,负责执行类的初始化代码,包括静态变量赋值和静态代码块的执行。它在类首次被使用时触发,或者通过调用 Class.forName() 等方法显式初始化。

类加载器的分类

引导类加载器

拓展类加载器

应用类加载器

ClassLoader类

双亲委派机制

介绍

工作原理:

优点

打破双亲委派机制

运行时数据区

1.程序计数器

2.本地方法栈

3.java虚拟机栈

4.堆

5.方法区

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AngleoLong

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值