JVM系列【1】虚拟机基础概念

372 阅读2分钟

JVM系列笔记目录

  • 虚拟机的基础概念
  • class文件结构
  • class文件加载过程
  • jvm内存模型
  • JVM常用指令
  • GC与调优

虚拟机的基础概念

1.Java从编码到执行过程

一个Java源文件如Hello.java通过编译命令javac编译成class文件Hello.class,在JVM中ClassLoader加载该class文件到JVM内存中,执行时候通过字节码解释器或是即时编译器解释后,交给执行引擎,执行引擎与OS硬件交互去完成执行。

2.JVM与class文件

JVM与java语言无关?是的,JVM实际上是与class文件打交道,而不是直接与Java语言打交道。理论上,任何编程语言编译成class文件,就可以在JVM中执行,这也是下面说的跨语言平台。

3.跨平台的语言和跨语言平台

跨平台语言: 指该语言可以在不同的操作系统下运行,包括但不限于linux、windows、mac、unix、andriod等。

跨语言平台:如下图简单的例子,不管编程语言是Java、scala、还是kotlin,只要最终编译成class文件,就能在JVM中执行,这里的Java Virtual Machine就是跨语言平台。

4.JVM的概念

何谓Java Virtual Machine? 简单理解就是虚拟出来的一台电脑,有自己特定的字节码指令集(汇编语言的),有专门的内存管理、堆、栈、方法区等。

5.Java语言规范和JVM规范

Java语言规范: The Java Language Specification 具体可以参考 Oracle官方JVM规范

JVM规范: The Java Virtual Machine Specification 具体可以参考 Oracle官方JVM规范

6.常见的JVM规范实现

Oracle官方规定了JVM的规范,不同的厂商针对这个规范实现各自的JVM,如下表。

JVM名称厂商说明
HotSpotOracle官方JVM
JRocketBEA曾经号称最快的虚拟机,被Oracle收购,合并进了HotSpot
J9IMB
MircrosoftVMMicrosoft
TaobaoVM阿里巴巴淘宝的JVM
LiquidVMBEA直接针对硬件的JVM
Azul VMAzul最新垃圾回收器Zing的标杆