虚拟机内存划分:
PC寄存器:线程独有 记录着线程当地运行java方法的地址,如果是本地方法,则为空。主要作用支持多线程,线程阻塞,挂起,恢复等一系列操作
Java虚拟机栈:线程独有,java虚拟机在创建线程时,同时创建,用于保存线程栈帧
- 栈帧:简单点说,可以解释为是一个方法运行时,临时数据的存储区域,具体点说,它里面包括了数据和部分的过程结果,与此同时,它又肩负着处理方法返回值、动态链接以及异常分派的任务。栈帧是随着方法的创建而创建,随着方法的结束而销毁,如果方法抛出异常,也算方法结束。然而在每一个栈帧中,都有着自己的局部变量表以及操作数栈以及对当前类的运行时常量池的引用。
Java堆:是虚拟机中最重要的部分,保存着所有对象实例和数组对象,而且内置了GC
方法区:全局共享,是堆组成的重要部分,主要存放:运行常量池,字段信息,方法信息,构造方法,普通函数的字节码内容,以及一些特殊方法,不包含GC,留在这里的东西会一直存在。
运行时常量池:
本地方法栈:线程独有,只要为了java执行native方法执行,如果不需要,则可以不依赖