(一)包含了哪几个部分?
①栈内存:每个线程私有。java方法执行的内存模型。java栈中存放的是一个个栈帧,每一个帧对应一个被调用的方法。栈帧包裹局部变量表、操作数栈、指向运行时常量的引用、方法返回地址、附加信息。当线程执行一个方法时,就会随之创建一个对应的栈帧,并将建立的栈帧压栈。当方法执行完毕之后,便会将栈帧出栈。因此可知,线程当前执行的方法所对应的栈帧必定位于Java栈的顶部。
②堆内存【GC机制,针对的是堆内存】:所有线程公有。存储对象本身以及数组的。
③方法区:所有线程共享。存储了每个类的信息(包括类名、方法信息、字段信息)。非常重要的部分--->运行时常量池(类和接口被加载到JVM后,对应的运行时常量池就被创建出来)
④程序计数器(PC寄存器):每个线程私有。用来指示执行哪条指令的。
⑤原生方法栈【很少用】:主要用于java与其他语言的通信。