虚拟机内存模型
JVM组成解析
- 运行时数据区
运行时数据区中包括:栈、堆、方法区(元空间)、本地方法栈、程序计数器。详细概念在之后会有记录。 - 类装载子系统
将字节码文件加载进运行时数据区。 - 字节码执行引擎
栈和栈帧
在Java中,每开启一个线程,虚拟机就会为其分配一个栈空间和一个程序计数器,栈空间内又包含这个线程所要执行的每个方法对应的栈帧。
先来看一段简单的代码:
public class StackDemo {
public static void main(String[] args) {
StackDemo sd = new StackDemo();
int number = sd.compute();
System.out.println("计算之后结果是:"+number);
}
public int compute(){
int a = 1;
int b = 2;
int c = (a + b) * 10;
return c;
}
}
对生成的class文件进行反编译,生成对应的JVM指令码:
使用javap -c StackDemo.class
命令,表示将这个class文件反编译并将反编译,并直接输出指令码到控制台。
public class com.jdc.demo.