问题9:jvm内存模型理解

1、方法区(Method Area):方法区,主要是放一下类似类定义、常量、编译后的代码、静态变量等

2、堆(Heap):几乎所有对象、数组等都是在此分配内存的,在JVM内存中占的比例也是极大的,也是GC垃圾回收的主要阵地,平时我们说的什么新生代、老年代、永久代也是指的这片区域

3、虚拟机栈(Java Stack):当JVM在执行方法时,会在此区域中创建一个栈帧来存放方法的各种信息,比如返回值,局部变量表和各种对象引用等,方法开始执行前就先创建栈帧入栈,执行完后就出栈

4、本地方法栈(Native Method Stack)和虚拟机栈类似,不过区别是专门提供给Native方法用的。

5、程序计数器(Program Counter Register):占用很小的一片区域,我们知道JVM执行代码是一行一行执行字节码,所以需要一个计数器来记录当前执行的行数。