详解 JVM 字节码 (1)
2019-05-03 本文已影响13人
zidea
在开始分析 class 字节码前我们先补一补一些基础知识,帮助我们更好地了解 jvm 是如何执行字节码的。大家可能都知道 JVM 是操作栈,
CLR常用简写词语,CLR是公共语言运行库(Common Language Runtime)和Java 虚拟机一样也是一个运行时环境,它负责资源管理(内存管理和垃圾收集等),并保证应用和底层操作系统之间必要的分离。CLR存在两种不同的翻译名称:公共语言运行库和公共语言运行时。
栈虚拟机
- 操作数栈持有操作数
- 操作数可以入栈或出栈进行操作
- 栈的大小是由每一个方法显式确定的
public class HelloWorld {
public static void main(String[] args) {
System.out.println("hello world");
}
}
这里我们写一个简单的 HelloWorld 代码,执行效果是在控制台输出 hello world

我们用查看字节码工具来看一下,main 方法执行那些指令将我们 hello world 进行输出,这里大家只是简单了解就行,随后给大家分享如何查看和分析字节码。

- 首先将 System.out.Print 压入栈
- 然后将字符串“hello world ” 入栈
- invokevitual 调用将调用 print 命令将 hello world 进行输出。
基本操作

这些操作完成对栈进行操作。JVM 是一个基于栈的虚拟机。