前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JVM运行时数据区-程序计数器篇

JVM运行时数据区-程序计数器篇

作者头像
晓果冻
发布2022-09-08 14:00:34
1640
发布2022-09-08 14:00:34
举报
文章被收录于专栏:一直在努力的Java菜鸡er

JVM运行时数据区-程序计数器篇

JVM运行时数据库包括5个区域,分别是:程序计数器、Java虚拟栈、本地方法栈、堆、方法区(JDK1.8之前,1.8之后叫元数据区)
程序计数器
  • 它是一块很小的内存空间。
  • 它是程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令。
  • Java多线程是通过多线程轮流切换并分配处理器的执行时间方式来实现的。在一个确定的时间,一个处理器(对于多核处理器来说是一个内核)只会执行一条指令。那Java虚拟机是如何记住上一个线程处理的位置呢?每个线程都有一个程序计数器,当某个线程执行一个Java方法时,计数器记录的是当前虚拟机字节码指令地址;如果是Native方法,则计数器存储的是空(Undefined)。这是Java虚拟机中唯一一个不会发生OOM情况的区域。
  1. 提问,如果在执行本地方法时,切换到另一个线程,之后怎么寻找该计数器?
  2. 答案:引自知乎R大解释
    image-20210425222826167!halo
    image-20210425222826167!halo
    image-20210425222920640!halo
    image-20210425222920640!halo
追加 既然是多线程,那多线程之间为什么互不影响?因为程序计数器中各个计数器之间相互不影响,独立存储。这类内存也被称为线程私有的内存。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • JVM运行时数据区-程序计数器篇
    • JVM运行时数据库包括5个区域,分别是:程序计数器、Java虚拟栈、本地方法栈、堆、方法区(JDK1.8之前,1.8之后叫元数据区)
      • 程序计数器
      • 追加 既然是多线程,那多线程之间为什么互不影响?因为程序计数器中各个计数器之间相互不影响,独立存储。这类内存也被称为线程私有的内存。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档