JVM中唯一一个不会发生GC和OOM的存储区域

Posted 程序员超时空

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JVM中唯一一个不会发生GC和OOM的存储区域相关的知识,希望对你有一定的参考价值。

PC寄存器

JVM中的PC寄存器是对物理PC寄存器的的一种抽象模拟。用来存储指向下一条指令的地址,也是即将要执行的指令代码。由执行引擎读取下一条指令。
占用内存很小,运行速度最快。线程私有。
唯一一个没有OOM的区域。

1.PC寄存器为什么会被设定为线程私有?

cpu会不停地做任务切换,这样必然导致经常中断和恢复。为了能够准确地记录各个线程正在执行的当前字节码指令地址,所以为每个线程都分配一个PC寄存器。

2.使用PC寄存器存储字节码指定地址有什么用?

CPU需要不停地切换各个线程,切换回来后,需要知道从哪继续执行。

3.为什么使用PC寄存器记录当前线程的执行地址?

JVM字节码解释器需要通过改变PC寄存器的值来明确下一条应该执行什么样的字节码指令。

以上是关于JVM中唯一一个不会发生GC和OOM的存储区域的主要内容,如果未能解决你的问题,请参考以下文章

JVM 内存布局

JVM系列之六:内存溢出内存泄漏 和 栈溢出

关于GC(中):Java垃圾回收相关基础知识

JVM发生OOM的 8 种原因及解决办法

JVM内存区域以及OOM

JVM系列-- 关于JVM 内存的 N 个问题