程序计数器:可以看作是当前线程所执行字节码的行号指示器。任何确定的时刻一个处理器只会执行一条线程的指令,为了多线程切换后能够恢复到正确的执行位置,每条线程都需要独立的程序计数器,所以程序计数器这块内存是线程私有的。
java虚拟机栈:是线程私有的,它的生命周期与线程相同。虚拟机栈描述的是java方法执行的内存模型,每个方法在执行时都会创建一个栈桢用于存储局部变量表、操作数栈、动态链接、方法出口等信息。
局部变量表存储了编译时期可知的各种基本数据类型,对象的引用和returnAddress类型
本地方法栈:它的作用与虚拟机栈类似,区别是虚拟机栈为虚拟机执行java方法服务,本地方法栈为虚拟机使用到的native方法服务。
java堆:是虚拟机所管理的最大一块内存,它是线程共享的。几乎所有对象实例以及数组都是在堆上分配内存的。java堆也是垃圾回收器管理的主要区域。
方法区:也是线程共享的,用于存储已经被虚拟机加载的类型信息、常量、静态变量、即时编译器编译后的代码等数据。
《深入理解JVM》记录。