学习JVM-基础篇-1

1、什么是JVM

JVM本质上是一个运行在计算机上的程序,它的职责是运行Java字节码文件。

java源代码执行流程:

①编写java源代码。

②使用java编译器(javac命令)将源代码编译成Java字节码文件。

③使用java虚拟机加载并运行Java字节码文件。

2、JVM的功能

①解释运行

将字节码实时的解释成机器码,让计算机执行

②内存管理

自动为对象分配内存空间,自动垃圾回收机制

③即时编译

对热点代码进行优化,提升执行聊率

3、常见的JVM

HotSpot(Oracle JDK)、HotSpot(Open JDK)、GraalVM、龙井、Eclipse OpenJ9

4、JVM虚拟机的组成

类加载器(ClassLoader):加载 class 字节码文件到内存中

运行时数据区(JVM管理的内存):负责管理 JVM 使用的内存,比如创建对象和销毁对象

执行引擎(即时编译器、解释器、垃圾回收等):将字节码文件中的指令解释成机器码,同时使用即时编译器优化性能

本地接口:调用本地的方法,C/C++的方法

5、字节码文件的组成

基础信息:魔数、字节码文件对应的Java版本号、访问标识、父类和接口信息

常量池:保存了字符串常量、类或接口名、字段名

字段:当前类或接口声明的字段信息

方法:当前类或接口声明的方法信息,核心内容为方法的字节码指令

属性:类的属性,比如源码的文件名、内部类的列表等

6、字节码的常用工具

javap:JDK自带的反编译工具

jclasslib:可以在代码编译之后实时看到字节码文件内容。

Arthas:线上监控诊断产品,通过全局视角实时查看应用 load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,大大提升线上问题排查效率。

相关推荐
2401_8971905520 分钟前
html标签怎么设置段落间距_p标签默认样式及调整建议【指南】
jvm·数据库·python
2301_8035389521 分钟前
如何修改Oracle用户密码_ALTER USER IDENTIFIED BY重置口令
jvm·数据库·python
NotFound48628 分钟前
Golang方法值接收者和指针接收者区别_Golang方法接收者教程【实战】
jvm·数据库·python
m0_6403093035 分钟前
Golang Gin怎么绑定JSON参数_Golang Gin JSON绑定教程【精通】
jvm·数据库·python
2301_7641505641 分钟前
CSS如何用Less实现多维度的样式复用_结合混合与继承技术实现
jvm·数据库·python
m0_7488394943 分钟前
MySQL触发器实现简单的分表逻辑_垂直分表与自动化路由
jvm·数据库·python
2301_817672261 小时前
mysql如何批量增加表的字段_脚本化DDL操作实践
jvm·数据库·python
Engineer邓祥浩1 小时前
JVM学习笔记(9) 第三部分 虚拟机执行子系统 第8章 虚拟机字节码执行引擎
jvm·笔记·学习
DaqunChen1 小时前
mysql存储引擎性能基准测试_InnoDB与MyISAM对比指南
jvm·数据库·python
2301_782659181 小时前
CSS Flex布局中如何实现导航栏与Logo的左右分布_利用justify-content- space-between
jvm·数据库·python