java虚拟机内存可以分为独占区和共享区。
独占区:虚拟内存栈、本地方法栈、程序计数器。
共享区:方法区、Java堆(用来存放对象实例)。
程序计数器
比较小的内存空间,当前线程所执行的字节码的行号指示器,如果执行的为java方法,那么计数器记录的是正在执行的虚拟机字节码指令的地址,如果方法是native方法,则为undefined。
虚拟机栈(为JVM执行java方法服务)
存放方法时运行的数据,描述的是方法执行的动态内存模型。
栈帧:每次方法执行,就会创建一个栈帧,栈帧进栈就开始执行。如果调用其他方法,则又会创建一个栈帧,就按照栈的先进先出来进行。
局部变量表:存放编译器可知的各种数据类型,大小不会改变,因为只存放引用。