当前位置: 首页 > 科技观察

Java程序计数器深究,大部分程序员都收藏了

时间:2023-03-21 13:09:26 科技观察

JAVA虚拟机管理的内存区域图1.什么是程序计数器?程序计数器是当前线程正在执行的字节码的地址。程序计数器是线程隔离的,每个线程在工作时都有一个独立的计数器。2.字节码的执行原理编译后的字节码在经过JIT(即时编译器)编译之前,由字节码解释器解释执行。执行原理是:字节码解释器读取内存中的字节码,依次读取字节码指令,读取一条指令并翻译成固定的操作,并根据这些操作进行分支、循环、跳转等动作。3.程序计数器的作用?从字节码的执行原理来看,程序计数器在单线程的情况下是可有可无的。因为即使没有程序计数器,程序也会按照指令顺序执行,即使遇到分支跳转等流程,也会按照跳转到指定指令的顺序继续执行,完全可以保证执行令。但在现实中,程序往往是多线程来完成任务的。JVM的多线程是通过CPU时间片的轮换来实现的,一个线程在执行过程中可能会因为时间片耗尽而挂掉。当它再次获得它的时间片时,它需要从它中断的地方继续执行。在JVM中,程序的字节码执行位置由程序计数器记录。程序计数器有线程隔离,每个线程都有自己的程序计数器4、程序计数器的特点(1)程序计数器有线程隔离(2)程序计数器占用的内存空间很小,可以忽略(3)程序计数器它是java虚拟机规范中唯一没有指定任何OutofMemeryError的区域(4)程序执行时,程序计数器有一个值,它记录了程序所在字节码的地址executing(5)当执行native本地方法时,程序计数器的值为空。原因是native方法是java通过jni调用本地C/C++库实现的,不是java字节码,所以不能算