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后退出

  • 相关阅读:
    cUBtYhaFzo
    「UVA1185」Big Number 解题报告
    「洛谷P3202」[HNOI2010]弹飞绵羊 解题报告
    「洛谷P2906」[USACO08OPEN]牛的街区Cow Neighborhoods 解题报告
    「洛谷P1306」斐波那契公约数 解题报告
    「SP25784」BUBBLESORT
    「UVA12004」 Bubble Sort 解题报告
    「洛谷P2397」 yyy loves Maths VI (mode) 解题报告
    「学习笔记」珂朵莉树 ODT
    log4j
  • 原文地址:https://www.cnblogs.com/wshcn/p/10303187.html
Copyright © 2011-2022 走看看