vlambda博客
学习文章列表

JVM05_程序计数器的作用、特点、线程私有、本地方法的概述


如果本篇文章对你有用,点赞支持,我是小智!感谢支持!

此次我们主要是针对程序计数器的作用、特点、线程私有、本地方法的概述

在后续我们将会对运行时数据区进行一一的详解

①. 程序计数器

  • ②. 特点(是线程私有的 、不会存在内存溢出)

  • ③. 注意:在物理上实现程序计数器是在寄存器实现的,整个cpu中最快的一个执行单元

  • ④. 它是唯一一个在java虚拟机规范中没有OOM的区域

  1. 因为CPU需要不停的切换各个线程,这时候切换回来以后,就得知道接着从哪开始继续执行

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

  • ⑦. 关于线程在JVM中的说明:

  1. 在Hotspot JVM里,每个线程都与操作系统的本地线程直接映射 (解释:当一个Java线程准备好执行以后,此时一个操作系统的本地线程也同时创建.Java线程执行终止后,本地线程也会被回收)

  2. 操作系统负责所有线程的安排调度到任何一个可用的CPU上。一旦本地线程初始化完毕,它就会调用Java线程中的run方法

②. 本地方法栈

  • ①. Native Interface本地接口

  1. 本地接口的作用是融合不同的编程语言为Java所用,它的初衷是融合C/C++程序,Java诞生的时候是C/C++横行的时候,要想立足,必须由调用C/C++程序,于是就在内存中专门开辟了一块区域处理标记为native的代码,它的具体做法是Native Method Stack中登记native方法,在Execution Engine执行时加载native libraies

  2. 目前该方法的使用的越来越少了,除非是与硬件有关的应用,比如通过Java程序驱动打印机或者Java系统管理生产设备,在企业级应用中已经比较少见。因为现在的异构领域间的通信很发达,比如可以使用Socket通信,也可以使用Web Service等等,不多做介绍

  • ②. 本地方法栈(Native Method Stack)(它的具体做法是Native Method Stack中登记native方法,在Execution Engine 执行时加载本地方法库)

  • ③. native方法的举例: Object类中的clone wait notify hashCode 等 Unsafe类都是native方法