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

  • 相关阅读:
    Which is the best software for MANET simulation?
    CORE—Common Open Research Emulator—INSTALL—Network Emulator
    Open-Source Network Simulators—CORE—Cloonix—GNS3—IMUNES
    mutt—linux命令行发带附件邮件—message file too big
    幼儿园复读生
    【codeforces 779D】String Game
    【BZOJ 1014】 [JSOI2008]火星人prefix
    【t004】切割矩阵
    【BZOJ 1015】 [JSOI2008]星球大战starwar
    【BZOJ 1016】[JSOI2008]最小生成树计数(搜索+克鲁斯卡尔)
  • 原文地址:https://www.cnblogs.com/wshcn/p/10303187.html
Copyright © 2011-2022 走看看