Java虚拟机(JVM)-基本概念和规范(一)

JVM (Java Virtual Machine)(Java虚拟机)

为什么要学习JVM

  • 面试需要
  • 更深入理解JAVA语言
  • 排查解决故障
  • 性能调优

认识JVM

JVM是什么?

  • 通过软件模拟的具有完整硬件系统功能的
  • 运行在一个完全隔离环境中的计算机系统
  • 通过软件模拟Java字节码的指令集,是Java程序的运行环境
    在这里插入图片描述

可以理解为是一个软件,运行字节码指令,从而实现运行程序

JVM能做什么?

  • 通过ClassLoader寻和装载Class文件(备注:Class文件本质就是字节码)。
  • 解释字节码为指令并执行。
  • 运行期间进行内存分配和垃圾回收
  • 提供与硬件交互的平台
    在这里插入图片描述
  • 对于JVM来说,只关心*.class文件。而程序员,使用什么语言来开发,都可以,只要使用的语言可以被编译成class文件,就可以被虚拟机进行装载并运行
  • java文件是通过java编译器(javac)编译成class文件的, 如果C语言有一种编译器,可以按照JVM规范将其编译成class文件,那么C语言开发的代码也是可以在JVM上运行,可惜的是现在并没有这样的一种编译器。

JVM规范

JVM指令集

  • 下面这张表格是《JVM规范》中2.11中提出的部分指令集,
  • 第一列的“T”代表通配符,每一行的首字母代表对应的数据类型,仔细观察很容易发现其中的规律
    在这里插入图片描述
  • 看一个简单的程序,源代码和指令集的一个映射关系,加深下印象
    在这里插入图片描述

Class文件格式

  • 基本概念,定义

    • Class文件是JVM的输入,Java虚拟机规范中定义了Class文件的结构
    • Class文件是JVM实现平台无关、技术无关的基础
  • L 表示对象 [ 表示数组 V表示 Void

  • 对于程序员来说,面对的是JAVA文件
  • 对于JVM来说,面对的是CLASS文件
  • Class文件本质上就是16进制编码,由于16进制编码理解成本过大,因此有指令集和16进制编码一一对应,方便用户去理解
  • 因此对于Class文件的可视问题,程序员是看指令集,JVM是看16进制编码(指令集 == 16进制编码)
    在这里插入图片描述
  • 如何去读懂这样的一个16进制字节码文件呢?那么就要依赖于《JVM规范》中4.1章节的ClassFile结构,此部分仅作了解即可,知其所以然即可。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值