JVM_1.5_运行时内存区域_程序计数器

运行时内存区域这块,如果不将内存各个区域做什么的了解清楚,后面看的会很累。

之前将JVM运行时内存区域的内容,整理在了一篇文章中。

在后续深入、细致的学习中,整理的内容越来越多,一篇的话,会导致篇幅过长。

所以将《JVM运行时内存区域详解》分为以下几个章节:

JVM_1.0_运行时内存区域

JVM_1.1_运行时内存区域_堆

JVM_1.2_运行时内存区域_Java虚拟机栈

JVM_1.3_运行时内存区域_方法区

JVM_1.4_运行时内存区域_本地方法栈

JVM_1.5_运行时内存区域_程序计数器

JVM_1.6_运行时内存区域_运行时常量池

JVM_1.7_运行时内存区域_栈帧

 

这里将《Java虚拟机规范中文版》上传了,点击下面链接,即可下载

Java虚拟机规范SE7中文版下载

 

目录

程序计数器(PC寄存器)

《深入理解Java虚拟机:JVM高级特性与最佳实践》

《Java Virtual Machine Specification Java SE 7 中文版》


 

程序计数器(PC寄存器)

《深入理解Java虚拟机:JVM高级特性与最佳实践》

程序计数器(PC寄存器)是一块较小的内存空间,它的作用可以看做是当前线程所执行的字节码的行号指示器

由于Java虚拟机的多线程是通过线程轮流切换并分配处理器执行时间的方式来实现的,在任何一个确定的时刻,一个处理器只会执行一条线程中的指令。

因此,为了线程切换后能恢复到正确的执行位置,每条线程都需要有一个独立的程序计数器,各条线程之间的程序计数器互不影响,独立存储,称这类内存区域为“线程私有”的内存。

如果线程执行的是一个Java方法,这个计数器记录的是正在执行的虚拟机字节码的地址。

如果线程执行的是一个Native方法,这个计数器值则为空。

此内存区域是唯一一个在Java虚拟机规范中没有规定任何OutOfMemoryError的区域。

 

《Java Virtual Machine Specification Java SE 7 中文版》

 Java 虚拟机可以支持多条线程同时执行(可参考《 Java 语言规范》第 17 章),每一条Java虚拟机线程都有自己的 PC( Program Counter)寄存器。

在任意时刻,一条 Java 虚拟机线程只会执行一个方法的代码,这个正在被线程执行的方法称为该线程的当前方法( Current Method, §2.6)。

如果这个方法不是 native 的,那 PC 寄存器就保存 Java 虚拟机正在执行的字节码指令的地址,如果该方法是 native 的,那 PC 寄存器的值是 undefined

PC 寄存器的容量至少应当能保存一个 returnAddress 类型的数据或者一个与平台相关的本地指针的值。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值