Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同数据区域。这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有些区域则是依赖用户线程的启动和结束而建立和销毁。
原文链接:http://sparkyuan.me/2016/04/22/JVM运行时数据区域/ ,转载请注明出去
程序计数器(PC)
程序计数器(Program Counter Register)是一块较小的内存空间,它的作用可以看做是当前线程所执行的字节码行号指示器。
- 当前线程所执行的字节码行号指示器
- 每个线程都有一个
- 线程私有,生命周期与线程相同,随JVM启动而生,JVM关闭而死
- 线程执行Java方法时,记录其正在执行的虚拟机字节码指令地址
- 线程执行Nativan方法时,计数器记录为空(Undefined)
- 唯一在Java虚拟机规范中没有规定任何OutOfMemoryError情况区域
Java虚拟机栈
虚拟机栈描述的是Java方法执行的内存模型:每个方法被执行的时候都会同时创建一个栈帧 (Stack Frame)用于存储局部变量表、操作栈、动态链接、方法出口等信息。每一个方法被调用直至执行完成的过