JVM中,程序计数器和虚拟机栈为什么是线程私有的?


小问题记录:

为什么程序计数器是线程私有的?

程序计数器:是jvm内存区域中一块较小的内存区域,其中记录的是当前线程执行到的字节码的行号,字节码解释器工作时通过改变程序计数器的值来选取下一条需要执行的字节码指令。

在线程切换过程中,程序计数器记录当前线程执行的字节码指令行号,再切换回该线程时,能保证正确运行。所以程序计数器是线程私有的。

注意:程序计数器是唯一一个不会出现 OutOfMemoryError 的内存区域,它的生命周期随着线程的创建而创建,随着线程的结束而死亡。

 

为什么虚拟机栈是线程私有的?

虚拟机栈可用类比数据结构中栈,虚拟机栈中保存的主要内容是栈帧,每一次函数调用都会有一个对应的栈帧被压入虚拟机栈,每一个函数调用结束后,都会有一个栈帧被弹出。

栈帧中保存的是(局部变量表、操作数栈、动态链接、方法出口信息)

为了保证线程局部变量不被其他的线程访问,因此虚拟机栈是线程私有的。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM