JVM的内存模型主要分为五个区域:栈(jvm栈)、堆、本地方法栈、程序计数器、方法区(元空间)
其中栈与本地方法栈和程序计数器是线程私有的,而堆区和方法区是全局共享的。
程序计数器:用于保存当前线程的行号。
本地方法栈:用于对JVM所需要的方法提供支持。
JVM栈: 用于保存栈帧。 每当方法被调用时,都会产生一个栈帧用于保存局部变量表、操作数栈等。
方法区:用于保存已经被JVM加载了的类的信息、常量以及静态变量。运行时常量池也在方法。
堆:用于保存所有对象的实例以及数组。物理内存上并不连续。
栈
public class Main{
public static void main(String[] args){
int a = 10;
new Main().funcl(a);
System.out.println(a);
}
public void funcl(int a){
//运行过程中拿到参数a,在栈的底部便会把a赋值为10;
int b = 10;//在a的底部会把b赋值为10;
System.out.println(a + b);
a = 11;