8.程序计数器(PC寄存器)

程序计数器(pc寄存器)简介

简介

1.它是一块很小的内存空间,几乎可以忽略不记,也是运行速度最快的存储区域
2.在jvm规范中,每个线程都有自己的程序计数器,是线程私有的,生命周期也和线程的生命周期保持一致
3.任何时间一个线程都只有一个方法执行,也就是所谓的当前方法,程序计数器会存储当前线程正在执行的java方法的jvm指令地址:
或者正在执行navicate方法,则是未指定值(undifined)

4.它是程序控制流的指示器,分支,循环,跳转,异常处理,线程恢复等基础功能需要依赖这个程序计数器完成
5.字节码解释器就是读取程序计数器中的值来选取下一条需要执行的字节码指令

6.他是唯一一个在java虚拟机规范中,没有规定任何OutOfMemoryError的区域

垃圾回收:
    回收堆和方法区的空间
    栈和程序计数器不需要回收
    但是栈会有oom的情况发生,例如递归调用导致的java.lang.StackOverflowError:栈溢出异常,一般发生在递归调用里
    
    例子:
    1.java.lang.StackOverflowError:栈溢出异常,一般发生在递归调用里
    样例代码如下:
        方法自己调自己,形成递归死锁,容易将线程栈撑爆!报java.lang.StackOverflowError
        public static void main(String[] args) {
            diGui();
        }
        private static void diGui() {
            diGui();
        }
    

 

posted @ 2022-07-14 22:11  努力的达子  阅读(453)  评论(0编辑  收藏  举报