特点:线程私有程序计数器是到哪里去指,不存在内存溢出问题。
简要的看下程序计数器的执行:
这是一段class字节码文件,它是由一条一条的指令构成的。指令后面的0 3 4等等数字表示一个虚拟的地址,当class字节码被类加载器加载到JVM显存后每一个虚拟地址会对应一个真正的数学地址。
程序计数器的作用就是保存下一条须要被执行指令的数学地址,而原语只须要从程序计数器中找到下一条指令的数学地址才能找到该条指令,然后解释生成机器码,交给CPU进行执行。
程序计数器对应在硬件层面上的PC寄存器。
这里引出一个问题:有人觉得,JVM虚拟机是分布在物理内存上的一块显存区域。
但是我个人觉得这些观点是不正确的。我觉得JVM是一种规范,是对计算机硬件的一种具象模拟。
JVM中PC计数器就是对计算机中硬件寄存器的一个具象模拟。
JVM中堆,栈就是对计算机中寻址的一个具象模拟。更加准确的说堆是计算机中主从的一个具象模拟,栈是计算机中高速缓存,PC寄存器的一个具象模拟。
把这种硬件进行一个集中具象模拟就定义了一套JVM的规范定义。
当然,上诉是个人一些感受观点程序计数器是到哪里去指,在这进行分享。如有误,望强调。
分类:
技术点:
相关文章: