JVM组成

JVM的组成总共分为三部分: 类装载子系统、运行时数据区(内存模型)、字节码执行引擎;
运行时数据区(内存模型)包含五个: 堆、栈(线程)、本地方法栈、方法区(元空间)、程序计数器;

运行时数据区

堆: 通过new的对象一般都是存放入堆中;
栈: 栈主要用来存放局部变量;

如上图所示,只要有一个线程开始运行,java虚拟机就会为当前线程分配专属的栈内存区域;
Ps: 只要有一个线程就会开辟一块栈内存空间,main线程运行就会开辟一块,其他线程也会开辟自己对应的栈内存空间;

当线程开始运行方法,假设线程开始运行,那么只要执行了一个方法就会分配一块栈帧的内存区域,运行了main方法那么就会开辟一块main方法的栈帧,那么我在main方法中定义的name局部变量就会存入到main()栈帧中;

如上图所示,只要执行了add()方法就会在main线程中开辟一块add()栈帧,并且将add()方法中的局部变量存入到add()栈帧内存中;
Ps: 为什么使用栈,栈的特点先进后出,也就是说先执行的方法内存后释放,最后执行的方法内存最先被释放;