Java内存区域——程序计数器

本文介绍了Java内存区域中的程序计数器,它作为每个线程的顺序执行指示器,记录了当前线程正在执行的字节码行号。由于不直接由开发者操作,因此不存在内存溢出问题。程序计数器与Java中的goto关键字概念相联,尽管Java目前不支持goto,但它是预留的保留字。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

我们这个图

这个图中画的大小并不能表示每一块内存区域的大小,这只是一个概念模型,我们只是通过这个图看一下有哪些区域,不要认为在这个图中区域大就认为它所占的内存区域就大。

这个怎么理解呢?比如我们随便写一个代码

我们在用这个代码的时候,直接运行就可以了,这里先不说这个方法是怎么加到方法栈中的,当我们这个代码在运行的过程中,它是从上往下一行一行的去执行

其实这里就用到了程序计数器,我们可以认为这个方法进栈之后,每一行代码都有一个标识,比如

首先执行第一行,然后执行第二行,以此类推,每次都从当前行找出来下一个要执行的语句来进行执行。

从第2行开始往下执行,当执行第4行时,因为a<b所以,程序计数器的值变成了7,就会去第7行执行。

可以把程序计数器理解成,当前线程所执行的字节码的行号指示器

就是每一个线程都会有它自己的程序计数器。

每一个线程是一个顺序执行单元,每一个线程都会有它自己的程序计数器。比如说,一个方法不在main方法中,然后,每次开线程来调用这个方法的时候,每一个线程都有它自己的程序计数器。

线程是一个顺序执行单元,那么,每一个执行单元,它都会有一个单独的程序计数器,那么,在执行程序的过程中程序计数器是独立的。

也就是我们这里标的1,2,3,4,5

当然,它不是这样的1,2,3,4,5。

为什么这个区域没有规定任何的内存溢出的情况呢?因为,我们并不操作这一块,作为开发者来讲,是不需要操作程序计数器的,程序计数器是由JVM内部维护的,所以是没有内存溢出情况。

Java中是不能用goto的,goto就是跳到某一行,它就类似于操作程序计数器。goto是Java中唯一的一个保留字,保留字就是,Java中没有,但是也不让开发者用的一个单词。保留字的目的就是为了可能在以后的版本中会增加这么一个标识作为它的一个关键字来使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值