zoukankan      html  css  js  c++  java
  • HotSpot设计原理与实现:一、初识HotSpot

    一、HotSpot内核模块组成和功能框架

    1、HotSpot内核模块图

    (1)Prims模块:

    (2)Service模块:

    (3)Runtime模块:

    二、虚拟机生命周期(JVM初始化过程)

    1、虚拟机生命周期时序图

     

    虚拟机生命周期

    1:Lancher JVM启动器

      Lancher是用于启动JVM和应用程序的工具,HotSpot中提供两种Lancher类型:通用启动器(即JDK命令程序:java,为产品级启动器)、调试版启动器gamma

       通用启动器:入口在hotspot/../jdk/src/share/bin/main.c

       调试版启动器:入口在/hotspot/src/share/tools/lancher/java.c

       Lancher入口main函数:不同操作系统中main函数的原型存在差异

             Linux或Unix系统中:在/hotspot/src/share/tools/lancher/java.c

             Windows系统中:../jdk/src/share/bin/main.c

       main工作重点:创建一个运行环境,启动一个新的线程创建JVM,并调用Java程序的main方法

    新线程(主线程)执行入口:JavaMain方法  ,伴随应用程序的整个生命周期

    2:主线程(JavaMain线程)

    JavaMain方法在:/hotspot/src/share/tools/lancher/java.c

        JavaMain的主要流程:

    JavaMain主程序流程3:InitializeJVM()方法:

                    初始化JVM,完成对vm和env指派接口函数的重任

     

    4:JNI_CreateJavaVM函数:

         主要任务是调用Threads模块的create_vm()函数,以完成最终的虚拟机的创建和初始化工作。

         在Threads模块中,实现对虚拟机各个模块的初始化,以及创建虚拟机线程.

     

    5:create_vm()初始化JVM系统相关模块

    6:add()函数,将线程加入线程队列

     

    7:create()函数,创建虚拟机线程”VMThread”

         VMThread是在JVM内部执行VMOperation的线程,实现JVM内部的核心操作,为其他运行时模块以及外部程序接口服务。VMThread线程创建成功后,在整个运行期间不断等待/接受并执行制定的VMOperation

        创建守护线程,包括:Signal Dispatcher,Attach Listener,Watcher  Thread等

     

    8:vm_init_globals():

          实现对全局性数据结构的初始化,比如初始化Java基本类型系统、分配全局事件缓存区、初始化事件队列、初始化全局锁、初始化内存池、初始化JVM性能统计数据区(Perf Data)

    9:init_globals()函数初始化全局模块 

          全局模块有:JMX(Manage模块),Code Cache(代码高速缓存),StubRountines,Universe,解释器,模板表,stubs

    10:LoadClass()函数加载应用程序主类    

    11:jni_CallStaticVoidMethod()函数实现对Java应用程序的主方法的调用。

    12:jni_DetachCurrentThread()函数

    13:jni_DestroyJavaVM()函数,销毁JVM后退出

  • 相关阅读:
    One网络模拟器探索之七:路由模块的工作原理
    An Intuitive Explanation of GraphSAGE
    《k8s 源码分析》- Custom Controller 之 Informer
    《k8s-1.13版本源码分析》-抢占调度
    《k8s-1.13版本源码分析》- Informer 机制
    《k8s-1.13版本源码分析》-调度器初始化
    《k8s-1.13版本源码分析》-源码调试
    《k8s-1.13版本源码分析》-调度优选
    《k8s-1.13版本源码分析》-调度预选
    《k8s-1.13版本源码分析》-调度器框架
  • 原文地址:https://www.cnblogs.com/wshcn/p/10303187.html
Copyright © 2011-2022 走看看