全国服务热线:400-035-8011

位置:郑州达内IT教育培训机构 > 学校动态 > 疫情后Java中的线程私有区域分析

疫情后Java中的线程私有区域分析

来源:郑州达内IT教育培训机构时间:2021/10/7 9:43:30

  疫情后Java中的线程私有区域分析
  在HotspotVM中,每个线程直接映射到操作系统的本地线程,因此这部分内存区域的存/否遵循本地线程的生成/失效。
  线程私有数据区域的生命周期与线程相同,它依赖于用户线程的启动/结束来创建/销毁(在HotspotVM中,每个线程直接映射到操作系统的本地线程,因此这部分内存区域的存/否遵循本地线程的生成/失效)。
  1.Native Method Stack本地方法栈

  当执行Execution Engine时,是在Native Method Stack中登记nativelibraies的值。

疫情后Java中的线程私有区域分析

  2.PCRegister程序计数器
  每一个线程都有一个程序计算器,即一个指针,指向方法区域中的方法字节码(下一条指令代码),执行引擎会读取下一条指令,它所占用的内存空间非常小,几乎可以忽略不记。
  “作用”是当前线程执行的字节码的行号指示符(类似于传统CPU模式中的PC),每次指令执行后,PC会自动增加,维护下一条指令的地址.在JVM模型中,字节码解释器是通过改变PC值来选择下一条需要执行的字节码指令,如分支、循环、跳转、异常处理、线程恢复等基本功能都需要依靠PC来完成(仅限于Java方法,Native方法该计数器值为undefined)。
  与以进程为单位调度不同的是,JVM中的并发操作是通过线程切换和分配执行时间片来实现的.在任何时刻,一个处理器内核只执行一条指令.因此,在切换线程之后,为了恢复正确的执行位置,每条线程都需要一个独立的程序计数器,这种内存称为“线程专用”内存。
  3.JavaStack(虚拟机栈)
  栈名亦称栈内存,它在创建线程时创建Java程序,其生命周期是与线程结束栈内存一起被释放的,对于线程结束栈内存来说,只要线程结束栈内存就会被释放,对栈来说只要Over就Over生命周期和线程一致。
  在函数的栈内存中分配基本类型的变量和引用对象的引用变量。
  在栈框架中主要包含3类数据:
  局部变量(LocalVariables):方法中的输入、输出参数和变量;
  堆栈操作(OperandStack):记录栈、入栈操作;
  栈框架数据(FrameData):包括类文件、方法等。
  堆栈操作原理
  栈帧(StackFrame)是一种存储块,栈帧是一个内存区块,是一个数据集,是一个有关方法和运行期数据的数据集,当一个方法A被调用时就产生了一个栈帧F1,并被压入到栈中,A方法又调用了B方法,于是产生栈帧F2也被压入栈,B方法又调用了C方法,于是产生栈帧F3也被压入栈……依次执行完毕后,先弹出后进......F3栈帧,再弹出F2栈帧,再弹出F1栈帧。
  遵从"先进后出"/"后进先出"原则。
领取试听课
每天限量名额,先到先得

尊重原创文章,转载请注明出处与链接:http://www.peixun360.com/3849/news/418927/违者必究! 以上就是郑州达内IT教育培训机构 小编为您整理 疫情后Java中的线程私有区域分析的全部内容。

温馨提示:提交留言后老师会第一时间与您联系!热线电话:400-035-8011