• JVM -- 运行时数据区之本地方法栈、PC寄存器、虚拟机栈


    0、前言

    此文所有讨论基于 HotSpot VM

     

    1、运行时数据区概览

     

      JAVA 中有个 Runtime 类表示了运行时环境(每个 JVM 进程对应唯一的一个 Runtime 对象)

     

     

     

     

    2、多线程和系统线程的对应模型

    JAVA 是支持多线程的,学过 OS 就知道,操作系统中内核级别的线程和用户级别的线程是有映射关系的(一对一、一对多、多对多),JVM 中的线程是需要映射和对应到本地操作系统的实际线程,对应的方式由不同的 JVM 实现方式(即不同的虚拟机)来决定,下面贴一段《操作系统概念》里面的原话,这些知识具体可参考此链接

     

    HotSpot使用的是一对一的模型

     

     

     

     3、程序计数器

     

     

     

     两个问题:

    1)为什么要使用 PC寄存器 or 使用 PC寄存器有什么好处?

     

    2)PC寄存器为什么是每个线程私有这种设定?

     

     

     4、虚拟机栈

     

    栈的优点

     

     

    栈的运行原理:

     

     

    栈帧的基本内容:

    局部变量表、操作数栈、方法返回地址、附加信息 => 参考链接

    动态链接 => 参考链接

    5、本地方法栈

    本地方法栈与虚拟机栈的作用是一样的,区别在于虚拟机栈为虚拟机执行java方法服务,而本地方法栈为虚拟机执行native方法服务,native方法为本地方法,不是用java语言写的有可能是c或者c++写的,在jdk中就有很多c的代码,就是提供给本地方法来调用的。
     
     
  • 相关阅读:
    NodeJs
    xml_MathML的基本知识点__这东西要自己实践最好
    嘻哈帮天通苑_poppin——张锋
    html5_canvas-记忆力卡片游戏
    baidu时光轴_使用window.scroll实现的
    my_poppin_and_me
    chrom_input_click
    Get filename from URL using Javascript
    UBB编辑器
    What is the best Java email address validation method?
  • 原文地址:https://www.cnblogs.com/qwertiLH/p/12508151.html
Copyright © 2020-2023  润新知