一、定义 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为以下几个区域,并统称为运行时数据区 其中线程共享的区域有堆和方法区 线程不共享的区域有程序计数器、Java虚拟机栈和本地方法栈 二、程序计数器 程序计数器(Program Counter Register)是一个较小的内存空间,字节码解释器工作时就是通过改变这个计数器的值来选择下一条需要执行的字节码指令 每个线程都有一个独立的程序计数器,多线程环境下程序计数器用于跟踪每个线程执行的位置 如果线程正在执行的是一个Java方法,这个计数器记录的值是正在执行的虚拟机字节码指令的地址;乳沟正在执行的是本地native方法,这个计数器则值为空 在Java虚拟机规范中,这个内存区域是没有OutOfMemoryError情况的区域 三、栈 3.1 Java虚拟机栈 Java虚拟机栈也是线程私有的,他的生命周期与线程相同; 每个方法被执行的时候,Java虚拟机都会同步创建一个栈帧(stack frame)用于存储局部变量表、操作数栈、动态链接、方法出口等信息 栈帧是JVM栈的基本单位,每当调用一个方法时,就会为该方法创建一个新的.... Java虚拟机--运行时数据区 java