在开始分析 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 是一个基于栈的虚拟机。
如果有想学习java的程序员,可来我们的java学习扣qun:697699179,免费送java的视频教程噢!我每晚上8点还会在群内直播讲解Java知识,欢迎大家前来学习哦。
文章来源: https://blog.csdn.net/sdssdfh/article/details/89790765