JVM内存模型:程序计数器

程序计数器是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。在java虚拟机的概念模型里字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,它是程序控制流的指示器,分支,循环,跳转,异常处理,线程恢复等基础功能都需要这个计数器来完成。
由于java虚拟机的多线程是通过线程轮流切换,分配处理器执行时间的方式来实现的,在任何一个确定的时刻,一个处理器(对于多核处理器来说是一个内核)都只会执行一个线程中的指令。因此,为了线程切换后能恢复到正确的执行位置,每条线程都需要有一个独立的程序计数器,各条线程之间的程序计数器互不影响,独立存储,我们称这类内存区域为线程私有的内存。
如果线程正在执行的是一个java方法,这个计数器记录的是正在执行的虚拟机字节码指令的地址,如果正在执行的是本地方法,这个计数器值应为空(Undefined)。
因为native方法是java通过JNI直接调用本地C/C++库,可以近似的认为native方法相当于C/C++暴露给java的一个接口,java通过调用这个接口从而调用到C/C++方法。由于该方法是通过C/C++而不是java进行实现。那么自然无法产生相应的字节码,并且C/C++执行时的内存分配是由自己语言决定的,而不是由JVM决定的。此内存区域是唯一一个在《java虚拟机规范》中没有规定任何OutOfMemoryError情况的区域,

相关文章:

  • 2021-12-23
  • 2021-11-28
  • 2021-10-22
  • 2021-10-12
  • 2022-02-26
  • 2021-11-03
  • 2022-01-08
  • 2021-08-04
猜你喜欢
  • 2022-12-23
  • 2022-01-27
  • 2021-08-29
  • 2021-10-05
  • 2021-08-22
  • 2021-07-23
相关资源
相似解决方案