JVM系列笔记目录

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

虚拟机的基础概念

1.Java从编码到执行过程

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

file

2.JVM与class文件

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

file

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

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

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

file

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名称 厂商 说明
HotSpot Oracle 官方JVM
JRocket BEA 曾经号称最快的虚拟机,被Oracle收购,合并进了HotSpot
J9 IMB
MircrosoftVM Microsoft
TaobaoVM 阿里巴巴 淘宝的JVM
LiquidVM BEA 直接针对硬件的JVM
Azul VM Azul 最新垃圾回收器Zing的标杆

知识分享,转载请注明出处。学无先后,达者为先!

版权声明:本文为kongbubihai原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/kongbubihai/p/13786209.html