什么是JVM?

目录

1、JVM的学习内容

2、JVM概述

3、字节码

4、虚拟机

5、HotSpot VM

6、Java代码的执行流程

1、JVM的学习内容

JVM大概分为三部分:

  1. 内存与垃圾回收
  2. 字节码与类的加载
  3. 性能监控与调优

2、JVM概述

JVM是运行在不同操作系统上的,和硬件没有直接交互,只是负责和操作系统交互。

什么是JVM?_第1张图片

JVM的通用性

JVM不只能运行java生成的字节码文件,还可以运行很多其他编程语言生成的字节码文件。

在Java7发布时,实现了在Java虚拟机平台上运行非Java语言编写的程序。

JVM不关心运行在其中的程序到底是用哪种语言编写的,它只关心字节码文件,也就是说,JVM具有语言无关性

只要一个字节码文件包含JVM的指令集、符号表和其他信息,它就能被JVM识别、装载并运行。

可以说,Java不是最强大的语言,但JVM是最强大的虚拟机

JVM的作用

JVM就是二进制字节码的运行环境,负责装载字节码到其内部,解释或编译为对应平台上的机器指令执行。

每一条java指令,JVM规范中都有详细定义,比如怎么读取操作数,怎么处理操作数,处理的结果放在哪里等。

JVM的特点

  1. 一次编译,到处运行
  2. 自动内存管理
  3. 自动垃圾回收

JVM如何实现跨平台

其实很简单,在下载JDK时,需要选择你的操作系统型号,而JDK包含JRE,JRE包含JVM。

各个操作系统对应的JVM也是有区别的

3、字节码

Class字节码文件的内容

Class文件中,包含了JVM指令集、符号表,以及一些其他辅助信息。

字节码文件和java语言的关系

平时说的java字节码,指的是java语言编译生成的字节码。

但是准确地说,任何能在JVM平台上执行的字节码,格式其实是一样的,所以不应该叫java字节码,应该叫JVM字节码。

字节码文件和JVM的关系

不同的编译器,可以编译出相同格式的字节码文件,字节码文件也能在不同的JVM上运行。

JVM与java语言的关系

JVM和java语言其实没有必然的联系,因为JVM只与特定的二进制文件格式:Class字节码文件相关联。

4、虚拟机

虚拟机的分类

大体上,虚拟机可以分为两类:

  • 系统虚拟机
  • 程序虚拟机

系统虚拟机

例如Vmware,它们是对物理计算机的仿真,提供了一个可以运行完整操作系统的软件平台。

程序虚拟机

例如JVM,专门为执行单个计算机程序而设计。

虚拟机的特征

不管哪种虚拟机,在上面运行的软件都被限制于虚拟机提供的资源中。

为什么要管理内存

如果不去定期回收一些内存,程序运行到最后就会非常卡顿,不合理

内存管理方面

Java提供了JVM,负责帮助我们管理内存。

而c++需要程序员手动管理内存,如果不熟悉,就容易出很多问题。

5、HotSpot VM

HotSpot VM是Java自带的高性能虚拟机,被Open JDK和Oracle JDK使用。

它采用解释器与即时编译器并存的架构。

6、Java代码的执行流程

源程序经过编译,得到一个或多个字节码文件,每个字节码文件对应一个具体的Java类。在对应操作系统的JVM上运行。

什么是JVM?_第2张图片

你可能感兴趣的:(深入理解Java虚拟机,jvm,java,spring,mvc,算法)