其他分享
首页 > 其他分享> > JVM学习笔记(一:JVM概述)

JVM学习笔记(一:JVM概述)

作者:互联网

JVM学习笔记:一:JVM概述

虚拟机:Virtual Machine ,是一款软件,用来执行一系列计算机指令。大体上,虚拟机可以分为系统虚拟机程序虚拟机
VMware属于系统虚拟机,是对物理计算机的仿真,提供了一个可运行完整操作系统的平台。
JVM 属于程序虚拟机,它专门为执行某个计算机程序而设计。

JVM概述

JVM(Java Virtual Machine)Java虚拟机

JVM的作用

在这里插入图片描述

JVM 特点

现在的JVM不仅可以执行Java字节码文件,还可以执行其他语言编译后的字节码文件,是一个跨语言的平台。

JVM的位置

JVM是运行在操作系统之上的,它与硬件没有直接的交互。
在这里插入图片描述在这里插入图片描述

JVM的组成

  1. 类加载器(ClassLoader)
  2. 运行时数据区(Runtime Data Area)
  3. 执行引擎(Execution Engine)
  4. 本地库接口(Native Interface)

简图:
在这里插入图片描述

详细图:
在这里插入图片描述
组成部分的用途
程序在执行之前要先把Java代码转换成字节码文件(.class文件),JVM首先需要把字节码通过一定的方式 类加载器(ClassLoader)把文件加载到内存中的运行时数据区(Runtime Data Area),而字节码文件是JVM的一套指令集规范,并不能直接交给底层的操作系统去执行,需要特定的命令解析器 执行引擎(Execution Engine) 将字节码翻译成底层系统指令再交由CPU去执行,这个过程需要调用其他语言的接口 本地库接口(Native Interface)来实现整个程序的功能。

通常所说的JVM组成指 运行时数据区 ,通常调试分析的区域就是 运行时数据区,或者说是运行时数据区 中的Heap (堆)。

Java代码的执行流程

在这里插入图片描述
在这里插入图片描述
Java编译器编译过程中,任何一个节点执行失败就会造成编译失败,虽然各个平台的Java虚拟机内部实现细节不尽相同,但是他们执行的字节码内容是一样的。

JVM主要任务就是负责将字节码装在到内部,解释 / 编译为对应平台上机器指令执行。JVM使用类加载器(Class Loader)装载class文件。

类加载完成后,会进行字节码校验,字节码校验通过之后,JVM解释器会把字节码翻译成机器码交由操作系统执行。但不是所有的代码都是解释执行,JVM对此作了优化,比如HotSpot虚拟机本身提供了JIT(Just In Time)编译器。

JVM 架构模型

Java编译器输入的指令流基本上是一种基于栈的指令集架构
另一种指令集架构是基于寄存器的指令集架构

两种架构之间的区别

执行 2+3 逻辑操作,指令如下:

  1. 基于栈的计算流程(JVM为例)
iconst_2   //常量2入栈
istore_1   
iconst_3   //常量3入栈
istore_2
iload_1    
iload_2
iadd       //常量2 3 出栈,执行相加
istore_0   //结果  5  出栈
  1. 基于寄存器的计算流程
mov eax,2  //将eax寄存器的值设为1
add eax,3  //将eax寄存器的值加3

使用javap -v class 可以将class文件反编译为指令集

所以由于跨平台的设计,Java指令集都是根据栈来设计的,不同CPU架构不同,因此不能设计为基于寄存器的。

标签:Java,字节,虚拟机,笔记,概述,JVM,执行,指令集
来源: https://blog.csdn.net/lanleihhh/article/details/123182490