jvm怎么看数据(jvm程序计数器)
作用程序计数器全称为 Program Counter Register (寄存器)
用于记录下一条jvm指令的执行地址,分支、循环、跳转、异常、线程恢复等都依赖于计数器。
这是一段控制台输出的java代码,编译后各个阶段的情况,主要看二进制字节码部分。当然这里的二进制字节码并不是大家所熟知的计算机的0和1,它并不能直接给到cpu执行,它需要通过解释器解释成一条机器码,机器码就可以交给cpu执行它了。 程序计数器的作用是记住下一条jvm指令的执行地址,从上面图中可以看出jvm指令前面都会有一个数字,可以把这个数字理解为一个指令对于的地址。
当这些指令被加载到虚拟机后执行顺序: 1. 先得到 0:getstatic 指令2. 交给解释器3. 解释器解释成机器码4. 机器码交给cpu,cpu执行
与此同时它会把下一条指令的地址 3地址 放入我们的程序计数器,等第一条指令完全执行完后,解释器就会到程序计数器中取到下一条指令的地址,去找下一条指令找到后重复刚才的流程。
特点线程私有注意:当解释器去程序计数器中取这个 3地址 的时候会把下一条指令 4地址 放入程序计数器中。在物理上实现程序计数器是在一个叫做寄存器来实现的,寄存器可以说是cpu中读取速度最快的部分。
不会存在内存溢出。java程序支持多线程运行,多线程运行时cpu调度器组件会给线程分配一个时间片。假如给线程一分配一个时间片,在时间片内它的代码没有执行完,它就会把线程一的状态执行一个暂存,切换到线程二中去,线程二执行完后又会切换到线程一。切换回去的时候会去程序计数器中拿到之前最后执行的代码地址,程序计数器绑定自己线程。
,在jvm规范中已经规定了程序计数器部分不会内存溢出
免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com