# JVM 入门及 class 文件

# Java 从编码到执行

image-20201109154254274

javac 执行 .java 文件到 .class 文件的编译

java 命令执行时, 会通过类加载器 ClassLoader 加载到内存, 同时加载的还有其依赖的一些类库.

再通过解释器JIT编译器解释执行或编译执行, 所以 Java 既是解释执行也是解释执行, JIT 只会对使用频率特别高的部分代码进行编译.

# 什么是 JVM

  • JVM 是一种规范,
  • 虚构出来的一台计算机.

# 特性

跨语言的平台

image-20201109154921035

Java 是跨平台的语言;

JVM 是跨语言的平台;

任何可以编译成 .class 文件(符合 .class 文件的规范), 都可以在 JVM 平台上运行.

# 常见的实现

HotSpot: Oracle 官方, 我们做实验用的 JVM

TaobaoVM: HotSpot 深度定制版

Jrockit: BEA, 曾经号称世界上最快的 JVM, 被 Oracle 收购, 合并于 HotSpot 中

J9: IBM

MicrosoftVM: 微软

LiquidVM: 直接针对硬件

Azul Zing: 最新垃圾回收的业界标杆, 商业版本, 收费很高, 垃圾回收在 1ms 以内.

# JDK JRE JVM

JDK= JRE + development kit(开发的相关包)

JRE = JVM + core lib(核心类库)

JVM

# ClassFileFormat

整个 Class 文件的格式就是一个二进制字节流.

# Class 文件中信息的含义

文件结构

# 如何查看 Class 文件中的信息

  • javap
  • JBE 还可以修改文件中的信息(汇编语言)
  • JClassLib

# 附1

image-20201109170446896

上次更新时间: 2020/11/10 上午1:34:34